Giter Club home page Giter Club logo

mpimd-csc / flexiblas Goto Github PK

View Code? Open in Web Editor NEW
35.0 35.0 6.0 62.43 MB

FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangeable backends. This is only a mirror of https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release

Home Page: https://www.mpi-magdeburg.mpg.de/projects/flexiblas

License: GNU Lesser General Public License v3.0

CMake 0.57% TeX 0.12% Fortran 76.93% Makefile 0.10% C 22.17% Meson 0.01% HTML 0.07% CSS 0.01% Roff 0.01% C++ 0.01% Lua 0.01% Shell 0.01% Dockerfile 0.01% Python 0.03% MATLAB 0.01%
blas lapack linear-algebra linear-algebra-library

flexiblas's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

flexiblas's Issues

macOS vecLib Accelerate Framework thread setting

FlexiBLAS now builds fine on macOS and can switch between "APPLE" (vecLib Accelerate Framework) and "OPENBLASOPENMP" (built with homebrew) - Thank you! But thread control for "APPLE" keeps default threads and always reports 1 thread (tested via R package flexiblas). Setting the variable VECLIB_MAXIMUM_THREADS before starting R, does control threads correctly. Is there a way to specify setting that variable with FlexiBLAS?

MKL Builder Threading in Sequential Version

ADD_CUSTOM_TARGET(mkl_sequential COMMAND make -C "$ENV{MKLROOT}/tools/builder" ${MKL_TARGET} export=${CMAKE_CURRENT_SOURCE_DIR}/backends/intel_mkl/${MKL_LIST} name="${CMAKE_BINARY_DIR}/libflexiblas_mkl_custom_sequential" threading=parallel interface=${MKL_INTERFACE})

Should it not be sequential instead of parallel?

Failing tests

I'm updating the Fedora package and I see failures in several architectures:

99% tests passed, 1 tests failed out of 119
Total Test time (real) = 168.38 sec
The following tests FAILED:
	 70 - LAPACK-xdmdeigtstd_ddmd_in (Failed)
Errors while running CTest
99% tests passed, 1 tests failed out of 119
Total Test time (real) = 181.97 sec
The following tests FAILED:
	119 - LAPACK_Test_Summary (Failed)
Errors while running CTest

aarch64 succeeded and ppc64le is still running. This is with LAPACK 3.12.0 in rawhide.

segmentation fault with numpy on POWER9 (only) when using FlexiBLAS

I'm seeing a Segmentation fault when running the numpy 1.20.3 tests when using FlexiBLAS 3.0.4 with OpenBLAS 0.3.15, but not when linking to OpenBLAS 0.3.15 directly, which tells me FlexiBLAS is somehow causing the segmentation fault...

I'm not seeing this problem on Intel (Haswell, Skylake X), AMD (Rome), or Arm (AWS Graviton2).

Here's a partial backtrace I obtained when running the numpy tests via gdb:

Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007ffff4887530 in dnrm2_k () from /home/centos/EasyBuild/software/OpenBLAS/0.3.15-GCC-10.3.0/lib/../lib64/libopenblas.so.0
Missing separate debuginfos, use: yum debuginfo-install libxcrypt-4.1.1-4.el8.ppc64le
(gdb) bt
#0  0x00007ffff4887530 in dnrm2_k () from /home/centos/EasyBuild/software/OpenBLAS/0.3.15-GCC-10.3.0/lib/../lib64/libopenblas.so.0
#1  0x00007ffff453d788 in dnrm2_ () from /home/centos/EasyBuild/software/OpenBLAS/0.3.15-GCC-10.3.0/lib/../lib64/libopenblas.so.0
#2  0x00007ffff62cfd9c in dnrm2_ () from /home/centos/EasyBuild/software/FlexiBLAS/3.0.4-GCC-10.3.0/lib64/libflexiblas.so.3
#3  0x00007ffff4d7816c in dgeev_ () from /home/centos/EasyBuild/software/OpenBLAS/0.3.15-GCC-10.3.0/lib/../lib64/libopenblas.so.0
#4  0x00007ffff639e8e4 in dgeev_ () from /home/centos/EasyBuild/software/FlexiBLAS/3.0.4-GCC-10.3.0/lib64/libflexiblas.so.3
#5  0x00007fff7364b334 in call_dgeev (params=0x7ffffffe63b0) at numpy/linalg/umath_linalg.c.src:2292
#6  DOUBLE_eig_wrapper (JOBVL=JOBVL@entry=78 'N', JOBVR=JOBVR@entry=86 'V', args=0x7fff50dad120, dimensions=<optimized out>, steps=<optimized out>) at numpy/linalg/umath_linalg.c.src:2292
#7  0x00007fff7364c02c in DOUBLE_eig (args=<optimized out>, dimensions=<optimized out>, steps=<optimized out>, __NPY_UNUSED_TAGGEDfunc=<optimized out>) at numpy/linalg/umath_linalg.c.src:2336
#8  0x00007ffff6a5d294 in PyUFunc_GeneralizedFunction (op=0x7ffffffe8200, kwds=0x0, args=0x7fff50dad0f0, ufunc=0x0) at numpy/core/src/umath/ufunc_object.c:2986
#9  PyUFunc_GenericFunction_int (ufunc=<optimized out>, ufunc@entry=0x7fff736c1130, args=args@entry=0x7fff50f88820, kwds=kwds@entry=0x7fff50e79c00, op=op@entry=0x7ffffffe8200)
    at numpy/core/src/umath/ufunc_object.c:3119
#10 0x00007ffff6a5f740 in ufunc_generic_call (ufunc=0x7fff736c1130, args=0x7fff50f88820, kwds=0x7fff50e79c00) at numpy/core/src/umath/ufunc_object.c:4747
...

This only happens when numpy is linked with FlexiBLAS:

$ ldd $(python -c "import numpy; print(numpy.core._multiarray_umath.__file__)") | grep blas
	libflexiblas.so.3 => /home/centos/EasyBuild/software/FlexiBLAS/3.0.4-GCC-10.3.0/lib64/libflexiblas.so.3 (0x0000200000570000)

Any ideas on what may be causing this segmentation fault?

I tried using ulimit -s unlimited (default is 8192 on that system), no change.

After export FLEXIBLAS=netlib to make FlexiBLAS use the fallback netlib backend, the segmentation fault doesn't happen either...

FindTBB.cmake looks for non-existent header

CMake Error at cmake/FindTBB.cmake:403 (file):
  file STRINGS file "/opt/local/include/tbb/tbb_stddef.h" cannot be read.
Call Stack (most recent call first):
  cmake/FindMklTBB.cmake:12 (FIND_PACKAGE)
  src/CMakeLists.txt:476 (FIND_PACKAGE)
  src/CMakeLists.txt:633 (BuildFindPackage)

oneTBB has no such a header, no wonder it is not found.

libflexiblas.so not found after installation

Hi,
I'm trying to build an install flexiblas on ubuntu 20.04, following these instructions https://github.com/mpimd-csc/flexiblas#install. There's no error during configuration, compilation, installation and testing, but then when I run flexiblas list I get:

flexiblas dlopen: libflexiblas.so.3: cannot open shared object file: No such file or directory
flexiblas dlopen: libflexiblas.so.3: cannot open shared object file: No such file or directory
System-wide:
System-wide (config directory):
 OPENBLASPTHREAD
   library = libflexiblas_openblaspthread.so
   comment = 
 NETLIB
   library = libflexiblas_netlib.so
   comment = 
 ATLAS
   library = libflexiblas_atlas.so
   comment = 
User config:
Host config:
Enviroment config:
cmake command log
-- The C compiler identification is GNU 9.4.0
-- The Fortran compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/lib/ccache/cc
-- Check for working C compiler: /usr/lib/ccache/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working Fortran compiler: /usr/bin/gfortran
-- Check for working Fortran compiler: /usr/bin/gfortran  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/bin/gfortran supports Fortran 90
-- Checking whether /usr/bin/gfortran supports Fortran 90 -- yes
-- Configuring FlexiBLAS 3.3.1
-- SYSCONFDIR: /usr/local/etc
-- LIBDIR:     /usr/local/lib
-- BINDIR:     /usr/local/bin
-- INCLUDEDIR: /usr/local/include
-- MANDIR:     /usr/local/share/man
-- Compiler_ID: GNU
-- FCompiler_ID: GNU
-- Fortran compiler supports -frecursive
-- Fortran compiler supports -fPIC
-- Fortran compiler supports -O3
-- Fortran compiler supports -Wimplicit-procedure
-- Fortran compiler supports -Wall
-- Fortran compiler supports -Wunused
-- Fortran compiler supports -Warray-temporaries
-- Fortran compiler supports -fbacktrace
-- Fortran compiler supports -Wshadow
-- Fortran compiler supports -O0
-- Performing Test C_W_PEDANTIC
-- Performing Test C_W_PEDANTIC - Success
-- Performing Test C_W_STRICT_PROTOTYPES
-- Performing Test C_W_STRICT_PROTOTYPES - Success
-- Performing Test C_W_CAST_QUAL
-- Performing Test C_W_CAST_QUAL - Success
-- Performing Test C_STACK_PROTECTOR
-- Performing Test C_STACK_PROTECTOR - Success
-- Performing Test C_STACK_CLASH
-- Performing Test C_STACK_CLASH - Success
-- Performing Test FC_STACK_PROTECTOR
-- Performing Test FC_STACK_PROTECTOR - Success
-- Performing Test FC_STACK_CLASH
-- Performing Test FC_STACK_CLASH - Success
-- Detecting Fortran/C Interface
-- Detecting Fortran/C Interface - Found GLOBAL and MODULE mangling
-- Verifying Fortran/C Compiler Compatibility
-- Verifying Fortran/C Compiler Compatibility - Success
-- Check for Thread Local Storage
-- Performing Test HAVE_THREAD_LOCAL
-- Performing Test HAVE_THREAD_LOCAL - Success
-- Performing Test HAVE__THREAD_LOCAL
-- Performing Test HAVE__THREAD_LOCAL - Success
-- Performing Test HAVE_GNU_THREAD_LOCAL
-- Performing Test HAVE_GNU_THREAD_LOCAL - Success
-- Looking for include file dlfcn.h
-- Looking for include file dlfcn.h - found
-- Looking for include file sys/sysmacro.h
-- Looking for include file sys/sysmacro.h - not found
-- Looking for include file sys/stat.h
-- Looking for include file sys/stat.h - found
-- Looking for RTLD_GLOBAL
-- Looking for RTLD_GLOBAL - found
-- Looking for RTLD_DEEPBIND
-- Looking for RTLD_DEEPBIND - found
-- Looking for RTLD_NOW
-- Looking for RTLD_NOW - found
-- Looking for RTLD_NODELETE
-- Looking for RTLD_NODELETE - found
-- Looking for dlopen
-- Looking for dlopen - not found
-- Looking for dlopen
-- Looking for dlopen - found
-- Check for __attribute__((constructor))
-- Looking for attribute:  constructor  - works
-- Check for __attribute__((alias("foo")))
-- Looking for attribute:  alias("foo")  - works
-- Check for __attribute__((visibility("hidden")))
-- Looking for attribute:  visibility("hidden")  - works
-- Check for __attribute__((visibility("default")))
-- Looking for attribute:  visibility("default")  - works
-- Check for __attribute__((unused))
-- Looking for attribute:  unused  - works
-- libcscutils in project build

-- LIBCSCUTILS Features
-- Enable module: inifile
-- Enable module: ds

-- Check Generic Functionality
-- Check for __attribute__((constructor))
-- Looking for attribute:  constructor  - works
-- Check for __attribute__((deprecated))
-- Looking for attribute:  deprecated  - works
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for pthread_yield
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for pthread_yield
-- Looking for pthread_yield - found
-- Looking for pthread_yield - found (using _GNU_SOURCE).
-- Looking for include file execinfo.h
-- Looking for include file execinfo.h - found
-- Looking for backtrace
-- Looking for backtrace - found
-- Looking for backtrace_symbols
-- Looking for backtrace_symbols - found
-- Enable csc_show_backtrace.
-- Looking for strnlen
-- Looking for strnlen
-- Looking for strnlen - not found
-- Looking for strnlen
-- Looking for strnlen - not found
-- Looking for strnlen
-- Looking for strnlen - not found
-- Looking for strnlen
-- Looking for strnlen - found
-- Looking for strnlen - found (using _POSIX_C_SOURCE=200809L).
-- Looking for strndup
-- Looking for strndup
-- Looking for strndup - not found
-- Looking for strndup
-- Looking for strndup - not found
-- Looking for strndup
-- Looking for strndup - not found
-- Looking for strndup
-- Looking for strndup - found
-- Looking for strndup - found (using _POSIX_C_SOURCE=200809L).
-- Looking for include file sys/ioctl.h
-- Looking for include file sys/ioctl.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for getline
-- Looking for getline
-- Looking for getline - not found
-- Looking for getline
-- Looking for getline - not found
-- Looking for getline
-- Looking for getline - not found
-- Looking for getline
-- Looking for getline - found
-- Looking for getline - found (using _POSIX_C_SOURCE=200809L).
-- Looking for getdelim
-- Looking for getdelim
-- Looking for getdelim - not found
-- Looking for getdelim
-- Looking for getdelim - not found
-- Looking for getdelim
-- Looking for getdelim - not found
-- Looking for getdelim
-- Looking for getdelim - found
-- Looking for getdelim - found (using _POSIX_C_SOURCE=200809L).

-- Features for CSC-INIFILE
-- Looking for realpath
-- Looking for realpath
-- Looking for realpath - found
-- Looking for realpath - found (using _NONE_).

-- External Libraries
-- Could NOT find CPUFREQ (missing: CPUFREQ_LIBRARIES CPUFREQ_INCLUDE_DIR) 
CPUFREQ not found. Either cpufreq.h or libcpupower.so is missing.
-- Looking for strdup
-- Looking for strdup
-- Looking for strdup - not found
-- Looking for strdup
-- Looking for strdup - not found
-- Looking for strdup
-- Looking for strdup - not found
-- Looking for strdup
-- Looking for strdup - found
-- Looking for strdup - found (using _POSIX_C_SOURCE=200809L).
-- Looking for realpath
-- Looking for realpath
-- Looking for realpath - found
-- Looking for realpath - found (using _NONE_).
-- Netlib BLAS uses the scaling/overflow/underflow improvements from LAPACK 3.10
-- Performing Test _frecursiveFlag
-- Performing Test _frecursiveFlag - Success
-- Reducing RELEASE optimization level to O2
-- Looking for Fortran NONE - found
-- Looking for Fortran INT_CPU_TIME - found
-- Looking for Fortran EXT_ETIME - not found
-- Looking for Fortran EXT_ETIME_ - not found
-- Looking for Fortran INT_ETIME - found
-- --> Will use second_INT_ETIME.f and dsecnd_INT_ETIME.f as timing function.
-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_Fortran: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- OpenBLAS-Serial:  x86_64-linux-gnu 
-- OpenBLAS-Serial:  Candidate: /usr/lib/x86_64-linux-gnu/libopenblas.so
-- OpenBLAS-Serial:  /usr/lib/x86_64-linux-gnu/libopenblas.so does not contain the Serial version of OpenBLAS.
-- Could NOT find OpenBLASSerial (missing: OpenBLASSerial_LIBRARY) 
-- OpenBLASSerial not found.
-- OpenBLAS-PThread:  x86_64-linux-gnu 
-- OpenBLAS-PThread:  Candidate: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so
-- Found OpenBLASPThread: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so  
-- Build BLAS interface: OpenBLASPThread
-- Libs: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so
-- Build additional BLAS interface: OpenBLASPThread
-- -- Libs: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so
-- -- Linker Flags: 
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - found
-- Looking for MKL_Get_Version
-- Looking for MKL_Get_Version - not found
-- Add CBLAS in dummy library
-- OpenBLAS-OpenMP:  x86_64-linux-gnu 
-- OpenBLAS-OpenMP:  Candidate: /usr/lib/x86_64-linux-gnu/libopenblas.so
-- OpenBLAS-OpenMP:  /usr/lib/x86_64-linux-gnu/libopenblas.so does not contain the OpenMP version of OpenBLAS.
-- Could NOT find OpenBLASOpenMP (missing: OpenBLASOpenMP_LIBRARY) 
-- OpenBLASOpenMP not found.
-- Blis-Serial:  x86_64-linux-gnu 
-- Could NOT find BlisSerial (missing: BlisSerial_LIBRARY) 
-- BlisSerial not found.
-- Blis-PThread:  x86_64-linux-gnu 
-- Could NOT find BlisPThread (missing: BlisPThread_LIBRARY) 
-- BlisPThread not found.
-- Blis-OpenMP:  x86_64-linux-gnu 
-- Could NOT find BlisOpenMP (missing: BlisOpenMP_LIBRARY) 
-- BlisOpenMP not found.
-- Search for MKL: mkl_gf_lp64 mkl_sequential mkl_core
-- MklSerial not found.
-- Search for MKL: mkl_gf_lp64 mkl_gnu_thread mkl_core
-- MklOpenMP not found.
-- PP: 
-- SP: 
-- MKL_TBB depends on TBB. Not Found.
-- MklTBB not found.
-- 
-- Search for ATLAS
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - found
-- BLAS Library ATLAS works with 32bit integers
-- Found BLAS: ATLAS (/usr/lib/x86_64-linux-gnu/libf77blas.so;/usr/lib/x86_64-linux-gnu/libatlas.so;-lpthread;-lm)
-- Build extra BLAS interface: ATLAS
-- Libs: /usr/lib/x86_64-linux-gnu/libf77blas.so;/usr/lib/x86_64-linux-gnu/libatlas.so;-lpthread;-lm
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for Fortran SCABS1
-- Looking for Fortran SCABS1 - not found
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - not found
-- ATLAS does not provide a scabs1 function
-- Extra Linker Flags: 
-- 
-- Search for Apple
-- A library with BLAS API not found. Please specify library location.
-- Default BLAS  not found. Use NETLIB instead.
-- Found hook directory.
-- Build profile hook.
-- Found OpenMP_C: -fopenmp  
-- Found OpenMP_Fortran: -fopenmp  
-- Found OpenMP: TRUE   
-- Enable Multithread Demo
-- Build Extra Benchmarks
-- OpenBLASPThread - /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so - 
-- ATLAS - /usr/lib/x86_64-linux-gnu/libf77blas.so;/usr/lib/x86_64-linux-gnu/libatlas.so;-lpthread;-lm;gfortran - 
-- Enable Testing...
-- /home/jeremie/R/O/flexiblas/test/blas/sblat1.in
-- /home/jeremie/R/O/flexiblas/test/blas/sblat2.in
-- /home/jeremie/R/O/flexiblas/test/blas/sblat3.in
-- /home/jeremie/R/O/flexiblas/test/blas/dblat1.in
-- /home/jeremie/R/O/flexiblas/test/blas/dblat2.in
-- /home/jeremie/R/O/flexiblas/test/blas/dblat3.in
-- /home/jeremie/R/O/flexiblas/test/blas/cblat1.in
-- /home/jeremie/R/O/flexiblas/test/blas/cblat2.in
-- /home/jeremie/R/O/flexiblas/test/blas/cblat3.in
-- /home/jeremie/R/O/flexiblas/test/blas/zblat1.in
-- /home/jeremie/R/O/flexiblas/test/blas/zblat2.in
-- /home/jeremie/R/O/flexiblas/test/blas/zblat3.in
-- Found PythonInterp: /home/jeremie/miniforge/bin/python3  
-- Found Python (3.9.13): /home/jeremie/miniforge/include/python3.9
-- Running Summary
-- ------------------------------------------------
--       Final Configuration Status 
-- ------------------------------------------------
-- Build 8 byte integer: OFF
-- Build CBLAS interface: ON
-- Install path: /usr/local
-- Extra BLAS search path: /usr/local/lib/flexiblas/
-- LAPACK Support: ON
-- LAPACK_API_VERSION: 3.11.0
-- ABI: GNU
-- Interface to Extra BLAS Libraries:
--  /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so - OpenBLASPThread 
--  /usr/lib/x86_64-linux-gnu/libf77blas.so;/usr/lib/x86_64-linux-gnu/libatlas.so;-lpthread;-lm;gfortran - ATLAS 
-- Default BLAS: NETLIB
-- 
-- Compiler Options:
--  CMAKE_C_FLAGS               =  -fPIC -std=c99 -fstack-protector-strong -fstack-clash-protection -D_FILE_OFFSET_BITS=64
--  CMAKE_C_FLAGS_RELEASE       = -O3 -DNDEBUG -O3 -Wpedantic -Wstrict-prototypes -Wcast-qual
--  CMAKE_C_FLAGS_DEBUG         = -g -Wall -Wunused -g -Wextra -Wshadow -Wstrict-aliasing -Wundef -Wlogical-op -Wparentheses -Wcast-qual -O0 -Wpedantic -Wstrict-prototypes -Wcast-qual
--  CMAKE_Fortran_FLAGS         =  -frecursive -fPIC -fstack-protector-strong -fstack-clash-protection
--  CMAKE_Fortran_FLAGS_RELEASE = -O3 -DNDEBUG -O3 -O3
--  CMAKE_Fortran_FLAGS_DEBUG   = -g -Wimplicit-procedure -Wall -Wunused -Warray-temporaries -fbacktrace -Wshadow -O0
-- ------------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jeremie/R/O/flexiblas/build
compilation log (removed all lines for individual files "building C object ..." because too long for github)
Scanning dependencies of target cscutils_src
[  0%] Built target cscutils_src
Scanning dependencies of target cscutils
[  0%] Linking Fortran static library ../lib/libcscutils.a
[  0%] Built target cscutils
Scanning dependencies of target flexiblas_netlib_objs
[  3%] Built target flexiblas_netlib_objs
Scanning dependencies of target flexiblas_fallback_lapack_objs
[ 37%] Built target flexiblas_fallback_lapack_objs
Scanning dependencies of target flexiblas
[ 74%] Linking C shared library ../lib/libflexiblas.so
[ 74%] Built target flexiblas
Scanning dependencies of target flexiblas_mgmt
[ 74%] Linking C shared library ../lib/libflexiblas_mgmt.so
[ 74%] Built target flexiblas_mgmt
[ 74%] Linking C executable flexiblas
[ 74%] Built target flexiblas-tool
Scanning dependencies of target flexiblas_atlas
[ 74%] Building C object src/CMakeFiles/flexiblas_atlas.dir/backends/generic/backend.c.o
[ 74%] Linking C shared library ../lib/libflexiblas_atlas.so
[ 74%] Built target flexiblas_atlas
Scanning dependencies of target flexiblas_openblaspthread
[ 74%] Building C object src/CMakeFiles/flexiblas_openblaspthread.dir/backends/generic/backend.c.o
[ 74%] Linking C shared library ../lib/libflexiblas_openblaspthread.so
[ 74%] Built target flexiblas_openblaspthread
Scanning dependencies of target flexiblas-config
[ 74%] Building C object src/CMakeFiles/flexiblas-config.dir/flexiblas-config.c.o
[ 74%] Linking C executable flexiblas-config
[ 74%] Built target flexiblas-config
Scanning dependencies of target flexiblas_api
[ 74%] Building C object src/CMakeFiles/flexiblas_api.dir/flexiblas_api_standalone.c.o
[ 74%] Linking C shared library ../lib/libflexiblas_api.so
[ 74%] Built target flexiblas_api
Scanning dependencies of target flexiblas_netlib
[ 74%] Linking Fortran shared library ../../lib/libflexiblas_netlib.so
[ 74%] Built target flexiblas_netlib
Scanning dependencies of target flexiblas_fallback_lapack
[ 74%] Building C object src/fallback_lapack/CMakeFiles/flexiblas_fallback_lapack.dir/dummy_3_11_0.c.o
[ 74%] Linking Fortran shared library ../../lib/libflexiblas_fallback_lapack.so
[ 74%] Built target flexiblas_fallback_lapack
Scanning dependencies of target flexiblas_hook_profile
[ 74%] Building C object src/hooks/profile/CMakeFiles/flexiblas_hook_profile.dir/profile_hook.c.o
[ 74%] Building C object src/hooks/profile/CMakeFiles/flexiblas_hook_profile.dir/profile_blas.c.o
[ 74%] Building C object src/hooks/profile/CMakeFiles/flexiblas_hook_profile.dir/profile_lapack_3_11_0.c.o
[ 74%] Linking C shared library ../../../lib/libflexiblas_hook_profile.so
[ 74%] Built target flexiblas_hook_profile
Scanning dependencies of target flexiblas_hook_dummy
[ 74%] Building C object src/hooks/dummy/CMakeFiles/flexiblas_hook_dummy.dir/dummy_hook.c.o
[ 74%] Linking C shared library ../../../lib/libflexiblas_hook_dummy.so
[ 74%] Built target flexiblas_hook_dummy
Scanning dependencies of target demo_imatcopy
[ 74%] Building C object examples/CMakeFiles/demo_imatcopy.dir/demo_imatcopy.c.o
[ 74%] Linking C executable demo_imatcopy
[ 74%] Built target demo_imatcopy
Scanning dependencies of target demo_omatcopy
[ 74%] Building C object examples/CMakeFiles/demo_omatcopy.dir/demo_omatcopy.c.o
[ 74%] Linking C executable demo_omatcopy
[ 74%] Built target demo_omatcopy
Scanning dependencies of target demo_xerbla
[ 74%] Building C object examples/CMakeFiles/demo_xerbla.dir/demo_xerbla.c.o
[ 74%] Linking C executable demo_xerbla
[ 74%] Built target demo_xerbla
Scanning dependencies of target test_zdotc_intel
[ 74%] Building C object examples/CMakeFiles/test_zdotc_intel.dir/test_zdotc_intel.c.o
[ 74%] Linking C executable test_zdotc_intel
[ 74%] Built target test_zdotc_intel
Scanning dependencies of target benchmark_dgetrf
[ 74%] Building C object examples/CMakeFiles/benchmark_dgetrf.dir/benchmark_dgetrf.c.o
[ 74%] Linking C executable benchmark_dgetrf
[ 74%] Built target benchmark_dgetrf
Scanning dependencies of target test_zdotc_gnu
[ 74%] Building C object examples/CMakeFiles/test_zdotc_gnu.dir/test_zdotc_gnu.c.o
[ 74%] Linking C executable test_zdotc_gnu
[ 74%] Built target test_zdotc_gnu
Scanning dependencies of target demo_api_standalone_fb
[ 74%] Building C object examples/CMakeFiles/demo_api_standalone_fb.dir/demo_api_standalone.c.o
[ 74%] Linking C executable demo_api_standalone_fb
[ 74%] Built target demo_api_standalone_fb
Scanning dependencies of target benchmark
[ 74%] Building C object examples/CMakeFiles/benchmark.dir/benchmark.c.o
[ 74%] Linking C executable benchmark
[ 74%] Built target benchmark
Scanning dependencies of target demo_1
[ 74%] Building C object examples/CMakeFiles/demo_1.dir/demo_1.c.o
[ 74%] Linking C executable demo_1
[ 74%] Built target demo_1
Scanning dependencies of target demo_axpby
[ 74%] Building C object examples/CMakeFiles/demo_axpby.dir/demo_axpby.c.o
[ 74%] Linking C executable demo_axpby
[ 74%] Built target demo_axpby
Scanning dependencies of target demo_set_threads
[ 74%] Building C object examples/CMakeFiles/demo_set_threads.dir/demo_set_threads.c.o
[ 74%] Linking C executable demo_set_threads
[ 74%] Built target demo_set_threads
Scanning dependencies of target demo_api
[ 74%] Building C object examples/CMakeFiles/demo_api.dir/demo_api.c.o
[ 74%] Linking C executable demo_api
[ 74%] Built target demo_api
Scanning dependencies of target demo_api_standalone_all
[ 74%] Building C object examples/CMakeFiles/demo_api_standalone_all.dir/demo_api_standalone.c.o
[ 74%] Linking C executable demo_api_standalone_all
[ 74%] Built target demo_api_standalone_all
Scanning dependencies of target benchmark_overhead_quickreturn.NETLIB
[ 74%] Building C object examples/CMakeFiles/benchmark_overhead_quickreturn.NETLIB.dir/benchmark_overhead_quickreturn.c.o
[ 74%] Linking C executable benchmark_overhead_quickreturn.NETLIB
[ 74%] Built target benchmark_overhead_quickreturn.NETLIB
Scanning dependencies of target demo_2
[ 74%] Building C object examples/CMakeFiles/demo_2.dir/demo_2.c.o
[ 74%] Linking C executable demo_2
[ 74%] Built target demo_2
Scanning dependencies of target benchmark_overhead_quickreturn.OpenBLASPThread
[ 74%] Building C object examples/CMakeFiles/benchmark_overhead_quickreturn.OpenBLASPThread.dir/benchmark_overhead_quickreturn.c.o
[ 74%] Linking C executable benchmark_overhead_quickreturn.OpenBLASPThread
[ 74%] Built target benchmark_overhead_quickreturn.OpenBLASPThread
Scanning dependencies of target test_zdotc_fortran
[ 74%] Building Fortran object examples/CMakeFiles/test_zdotc_fortran.dir/test_zdotc_fortran.f90.o
[ 74%] Linking Fortran executable test_zdotc_fortran
[ 74%] Built target test_zdotc_fortran
Scanning dependencies of target benchmark_overhead_quickreturn
[ 74%] Building C object examples/CMakeFiles/benchmark_overhead_quickreturn.dir/benchmark_overhead_quickreturn.c.o
[ 74%] Linking C executable benchmark_overhead_quickreturn
[ 74%] Built target benchmark_overhead_quickreturn
Scanning dependencies of target demo_api_standalone_allinv
[ 74%] Building C object examples/CMakeFiles/demo_api_standalone_allinv.dir/demo_api_standalone.c.o
[ 75%] Linking C executable demo_api_standalone_allinv
[ 75%] Built target demo_api_standalone_allinv
Scanning dependencies of target demo_api_standalone_api
[ 75%] Building C object examples/CMakeFiles/demo_api_standalone_api.dir/demo_api_standalone.c.o
[ 75%] Linking C executable demo_api_standalone_api
[ 75%] Built target demo_api_standalone_api
Scanning dependencies of target benchmark.OpenBLASPThread
[ 75%] Building C object examples/CMakeFiles/benchmark.OpenBLASPThread.dir/benchmark.c.o
[ 75%] Linking C executable benchmark.OpenBLASPThread
[ 75%] Built target benchmark.OpenBLASPThread
Scanning dependencies of target benchmark.NETLIB
[ 75%] Building C object examples/CMakeFiles/benchmark.NETLIB.dir/benchmark.c.o
[ 75%] Linking C executable benchmark.NETLIB
[ 75%] Built target benchmark.NETLIB
Scanning dependencies of target benchmark.ATLAS
[ 75%] Building C object examples/CMakeFiles/benchmark.ATLAS.dir/benchmark.c.o
[ 75%] Linking C executable benchmark.ATLAS
[ 75%] Built target benchmark.ATLAS
Scanning dependencies of target benchmark_overhead_quickreturn.ATLAS
[ 75%] Building C object examples/CMakeFiles/benchmark_overhead_quickreturn.ATLAS.dir/benchmark_overhead_quickreturn.c.o
[ 75%] Linking C executable benchmark_overhead_quickreturn.ATLAS
[ 75%] Built target benchmark_overhead_quickreturn.ATLAS
Scanning dependencies of target demo_multithread
[ 75%] Building C object examples/CMakeFiles/demo_multithread.dir/demo_multithread.c.o
[ 75%] Linking C executable demo_multithread
[ 75%] Built target demo_multithread
Scanning dependencies of target xblat2d
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat2d.dir/dblat2.f.o
[ 75%] Linking Fortran executable xblat2d
[ 75%] Built target xblat2d
Scanning dependencies of target xblat2s
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat2s.dir/sblat2.f.o
[ 75%] Linking Fortran executable xblat2s
[ 75%] Built target xblat2s
Scanning dependencies of target xblat1d
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat1d.dir/dblat1.f.o
[ 75%] Linking Fortran executable xblat1d
[ 75%] Built target xblat1d
Scanning dependencies of target xblat3z
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat3z.dir/zblat3.f.o
[ 75%] Linking Fortran executable xblat3z
[ 75%] Built target xblat3z
Scanning dependencies of target xblat3d
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat3d.dir/dblat3.f.o
[ 75%] Linking Fortran executable xblat3d
[ 75%] Built target xblat3d
Scanning dependencies of target xblat1c
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat1c.dir/cblat1.f.o
[ 75%] Linking Fortran executable xblat1c
[ 75%] Built target xblat1c
Scanning dependencies of target xblat2c
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat2c.dir/cblat2.f.o
[ 75%] Linking Fortran executable xblat2c
[ 75%] Built target xblat2c
Scanning dependencies of target xblat3s
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat3s.dir/sblat3.f.o
[ 75%] Linking Fortran executable xblat3s
[ 75%] Built target xblat3s
Scanning dependencies of target xblat3c
[ 75%] Building Fortran object test/blas/CMakeFiles/xblat3c.dir/cblat3.f.o
[ 76%] Linking Fortran executable xblat3c
[ 76%] Built target xblat3c
Scanning dependencies of target xblat1z
[ 76%] Building Fortran object test/blas/CMakeFiles/xblat1z.dir/zblat1.f.o
[ 76%] Linking Fortran executable xblat1z
[ 76%] Built target xblat1z
Scanning dependencies of target xblat1s
[ 76%] Building Fortran object test/blas/CMakeFiles/xblat1s.dir/sblat1.f.o
[ 76%] Linking Fortran executable xblat1s
[ 76%] Built target xblat1s
Scanning dependencies of target xblat2z
[ 76%] Building Fortran object test/blas/CMakeFiles/xblat2z.dir/zblat2.f.o
[ 76%] Linking Fortran executable xblat2z
[ 76%] Built target xblat2z
Scanning dependencies of target xzcblat2
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xzcblat2.dir/c_zblat2.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat2.dir/c_zblas2.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat2.dir/c_z2chke.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat2.dir/auxiliary.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat2.dir/c_xerbla.c.o
[ 76%] Linking Fortran executable xzcblat2
[ 76%] Built target xzcblat2
Scanning dependencies of target xscblat1
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xscblat1.dir/c_sblat1.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat1.dir/c_sblas1.c.o
[ 76%] Linking Fortran executable xscblat1
[ 76%] Built target xscblat1
Scanning dependencies of target xscblat2
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xscblat2.dir/c_sblat2.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat2.dir/c_sblas2.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat2.dir/c_s2chke.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat2.dir/auxiliary.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat2.dir/c_xerbla.c.o
[ 76%] Linking Fortran executable xscblat2
[ 76%] Built target xscblat2
Scanning dependencies of target xscblat3
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xscblat3.dir/c_sblat3.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat3.dir/c_sblas3.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat3.dir/c_s3chke.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat3.dir/auxiliary.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xscblat3.dir/c_xerbla.c.o
[ 76%] Linking Fortran executable xscblat3
[ 76%] Built target xscblat3
Scanning dependencies of target xdcblat1
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xdcblat1.dir/c_dblat1.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xdcblat1.dir/c_dblas1.c.o
[ 76%] Linking Fortran executable xdcblat1
[ 76%] Built target xdcblat1
Scanning dependencies of target xdcblat2
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xdcblat2.dir/c_dblat2.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xdcblat2.dir/c_dblas2.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xdcblat2.dir/c_d2chke.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xdcblat2.dir/auxiliary.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xdcblat2.dir/c_xerbla.c.o
[ 76%] Linking Fortran executable xdcblat2
[ 76%] Built target xdcblat2
Scanning dependencies of target xzcblat3
[ 76%] Building Fortran object test/blas/cblas/CMakeFiles/xzcblat3.dir/c_zblat3.f.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat3.dir/c_zblas3.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat3.dir/c_z3chke.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat3.dir/auxiliary.c.o
[ 76%] Building C object test/blas/cblas/CMakeFiles/xzcblat3.dir/c_xerbla.c.o
[ 77%] Linking Fortran executable xzcblat3
[ 77%] Built target xzcblat3
Scanning dependencies of target xccblat1
[ 77%] Building Fortran object test/blas/cblas/CMakeFiles/xccblat1.dir/c_cblat1.f.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat1.dir/c_cblas1.c.o
[ 77%] Linking Fortran executable xccblat1
[ 77%] Built target xccblat1
Scanning dependencies of target xccblat2
[ 77%] Building Fortran object test/blas/cblas/CMakeFiles/xccblat2.dir/c_cblat2.f.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat2.dir/c_cblas2.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat2.dir/c_c2chke.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat2.dir/auxiliary.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat2.dir/c_xerbla.c.o
[ 77%] Linking Fortran executable xccblat2
[ 77%] Built target xccblat2
Scanning dependencies of target xdcblat3
[ 77%] Building Fortran object test/blas/cblas/CMakeFiles/xdcblat3.dir/c_dblat3.f.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xdcblat3.dir/c_dblas3.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xdcblat3.dir/c_d3chke.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xdcblat3.dir/auxiliary.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xdcblat3.dir/c_xerbla.c.o
[ 77%] Linking Fortran executable xdcblat3
[ 77%] Built target xdcblat3
Scanning dependencies of target xccblat3
[ 77%] Building Fortran object test/blas/cblas/CMakeFiles/xccblat3.dir/c_cblat3.f.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat3.dir/c_cblas3.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat3.dir/c_c3chke.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat3.dir/auxiliary.c.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xccblat3.dir/c_xerbla.c.o
[ 77%] Linking Fortran executable xccblat3
[ 77%] Built target xccblat3
Scanning dependencies of target xzcblat1
[ 77%] Building Fortran object test/blas/cblas/CMakeFiles/xzcblat1.dir/c_zblat1.f.o
[ 77%] Building C object test/blas/cblas/CMakeFiles/xzcblat1.dir/c_zblas1.c.o
[ 77%] Linking Fortran executable xzcblat1
[ 77%] Built target xzcblat1
Scanning dependencies of target tmglib
[ 78%] Linking Fortran static library ../../../lib/libtmglib.a
[ 78%] Built target tmglib
Scanning dependencies of target xlintsts
[ 81%] Linking Fortran executable xlintsts
[ 81%] Built target xlintsts
Scanning dependencies of target xlintstd
[ 84%] Linking Fortran executable xlintstd
[ 84%] Built target xlintstd
Scanning dependencies of target xlintstrfc
[ 84%] Linking Fortran executable xlintstrfc
[ 84%] Built target xlintstrfc
Scanning dependencies of target xlintstrfs
[ 84%] Linking Fortran executable xlintstrfs
[ 84%] Built target xlintstrfs
Scanning dependencies of target xlintstds
[ 84%] Linking Fortran executable xlintstds
[ 84%] Built target xlintstds
Scanning dependencies of target xlintstc
[ 88%] Linking Fortran executable xlintstc
[ 88%] Built target xlintstc
Scanning dependencies of target xlintstz
[ 92%] Linking Fortran executable xlintstz
[ 92%] Built target xlintstz
Scanning dependencies of target xlintstrfz
[ 92%] Linking Fortran executable xlintstrfz
[ 92%] Built target xlintstrfz
Scanning dependencies of target xlintstzc
[ 92%] Linking Fortran executable xlintstzc
[ 92%] Built target xlintstzc
Scanning dependencies of target xlintstrfd
[ 93%] Linking Fortran executable xlintstrfd
[ 93%] Built target xlintstrfd
Scanning dependencies of target xeigtstz
[ 95%] Linking Fortran executable xeigtstz
[ 95%] Built target xeigtstz
Scanning dependencies of target xeigtstd
[ 97%] Linking Fortran executable xeigtstd
[ 97%] Built target xeigtstd
Scanning dependencies of target xeigtstc
[ 99%] Linking Fortran executable xeigtstc
[ 99%] Built target xeigtstc
Scanning dependencies of target xeigtsts
[100%] Linking Fortran executable xeigtsts
[100%] Built target xeigtsts
Installation log
[  0%] Built target cscutils_src
[  0%] Built target cscutils
[  3%] Built target flexiblas_netlib_objs
[ 37%] Built target flexiblas_fallback_lapack_objs
[ 74%] Built target flexiblas
[ 74%] Built target flexiblas_mgmt
[ 74%] Built target flexiblas-tool
[ 74%] Built target flexiblas_atlas
[ 74%] Built target flexiblas_openblaspthread
[ 74%] Built target flexiblas-config
[ 74%] Built target flexiblas_api
[ 74%] Built target flexiblas_netlib
[ 74%] Built target flexiblas_fallback_lapack
[ 74%] Built target flexiblas_hook_profile
[ 74%] Built target flexiblas_hook_dummy
[ 74%] Built target demo_imatcopy
[ 74%] Built target demo_omatcopy
[ 74%] Built target demo_xerbla
[ 74%] Built target test_zdotc_intel
[ 74%] Built target benchmark_dgetrf
[ 74%] Built target test_zdotc_gnu
[ 74%] Built target demo_api_standalone_fb
[ 74%] Built target benchmark
[ 74%] Built target demo_1
[ 74%] Built target demo_axpby
[ 74%] Built target demo_set_threads
[ 74%] Built target demo_api
[ 74%] Built target demo_api_standalone_all
[ 74%] Built target benchmark_overhead_quickreturn.NETLIB
[ 74%] Built target demo_2
[ 74%] Built target benchmark_overhead_quickreturn.OpenBLASPThread
[ 74%] Built target test_zdotc_fortran
[ 74%] Built target benchmark_overhead_quickreturn
[ 75%] Built target demo_api_standalone_allinv
[ 75%] Built target demo_api_standalone_api
[ 75%] Built target benchmark.OpenBLASPThread
[ 75%] Built target benchmark.NETLIB
[ 75%] Built target benchmark.ATLAS
[ 75%] Built target benchmark_overhead_quickreturn.ATLAS
[ 75%] Built target demo_multithread
[ 75%] Built target xblat2d
[ 75%] Built target xblat2s
[ 75%] Built target xblat1d
[ 75%] Built target xblat3z
[ 75%] Built target xblat3d
[ 75%] Built target xblat1c
[ 75%] Built target xblat2c
[ 75%] Built target xblat3s
[ 76%] Built target xblat3c
[ 76%] Built target xblat1z
[ 76%] Built target xblat1s
[ 76%] Built target xblat2z
[ 76%] Built target xzcblat2
[ 76%] Built target xscblat1
[ 76%] Built target xscblat2
[ 76%] Built target xscblat3
[ 76%] Built target xdcblat1
[ 76%] Built target xdcblat2
[ 77%] Built target xzcblat3
[ 77%] Built target xccblat1
[ 77%] Built target xccblat2
[ 77%] Built target xdcblat3
[ 77%] Built target xccblat3
[ 77%] Built target xzcblat1
[ 78%] Built target tmglib
[ 81%] Built target xlintsts
[ 84%] Built target xlintstd
[ 84%] Built target xlintstrfc
[ 84%] Built target xlintstrfs
[ 84%] Built target xlintstds
[ 88%] Built target xlintstc
[ 92%] Built target xlintstz
[ 92%] Built target xlintstrfz
[ 92%] Built target xlintstzc
[ 93%] Built target xlintstrfd
[ 95%] Built target xeigtstz
[ 97%] Built target xeigtstd
[ 99%] Built target xeigtstc
[100%] Built target xeigtsts
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/etc/flexiblasrc
-- Installing: /usr/local/include/flexiblas/blas_gnu.h
-- Installing: /usr/local/include/flexiblas/blas_intel.h
-- Installing: /usr/local/include/flexiblas/flexiblas_config.h
-- Installing: /usr/local/include/flexiblas/flexiblas_api.h
-- Installing: /usr/local/include/flexiblas/flexiblas_fortran_mangle.h
-- Installing: /usr/local/include/flexiblas/lapack.h
-- Installing: /usr/local/include/flexiblas/flexiblas_real_lapack.h
-- Installing: /usr/local/include/flexiblas/flexiblas_backend.h
-- Installing: /usr/local/include/flexiblas/flexiblas_real_calls.h
-- Installing: /usr/local/include/flexiblas/flexiblas_real_cblas_calls.h
-- Installing: /usr/local/include/flexiblas/flexiblas_dummy_fortran.h
-- Installing: /usr/local/include/flexiblas/flexiblas_dummy_cblas.h
-- Installing: /usr/local/include/flexiblas/flexiblas_mgmt.h
-- Installing: /usr/local/include/flexiblas/cblas.h
-- Installing: /usr/local/lib/pkgconfig/flexiblas.pc
-- Installing: /usr/local/lib/pkgconfig/flexiblas_api.pc
-- Up-to-date: /usr/local/share/man
-- Up-to-date: /usr/local/share/man/man3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_load_backend.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_get_version.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_load_backend_library.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_switch.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_print_loaded_backends.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_print_avail_backends.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_avail.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_print_current_backend.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_current_backend.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_set_num_threads.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_list.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_get_num_threads.3
-- Up-to-date: /usr/local/share/man/man3/flexiblas_list_loaded.3
-- Up-to-date: /usr/local/share/man/man1
-- Up-to-date: /usr/local/share/man/man1/flexiblas.1
-- Up-to-date: /usr/local/share/man/man7
-- Up-to-date: /usr/local/share/man/man7/flexiblas-api.7
-- Installing: /usr/local/lib/libflexiblas.so.3.3
-- Installing: /usr/local/lib/libflexiblas.so.3
-- Installing: /usr/local/lib/libflexiblas.so
-- Installing: /usr/local/lib/libflexiblas_mgmt.so.3.3
-- Installing: /usr/local/lib/libflexiblas_mgmt.so.3
-- Installing: /usr/local/lib/libflexiblas_mgmt.so
-- Installing: /usr/local/lib/libflexiblas_api.so.3.3
-- Installing: /usr/local/lib/libflexiblas_api.so.3
-- Installing: /usr/local/lib/libflexiblas_api.so
-- Installing: /usr/local/bin/flexiblas
-- Set runtime path of "/usr/local/bin/flexiblas" to ""
-- Installing: /usr/local/bin/flexiblas-config
-- Installing: /usr/local/lib/flexiblas/libflexiblas_openblaspthread.so
-- Set runtime path of "/usr/local/lib/flexiblas/libflexiblas_openblaspthread.so" to "/usr/lib/x86_64-linux-gnu/openblas-pthread"
-- Installing: /usr/local/etc/flexiblasrc.d/OpenBLASPThread.conf
-- Installing: /usr/local/lib/flexiblas/libflexiblas_atlas.so
-- Installing: /usr/local/etc/flexiblasrc.d/ATLAS.conf
-- Installing: /usr/local/etc/flexiblasrc.d/NETLIB.conf
-- Installing: /usr/local/lib/flexiblas/libflexiblas_netlib.so
-- Installing: /usr/local/lib/flexiblas/libflexiblas_fallback_lapack.so
-- Installing: /usr/local/lib/flexiblas/libflexiblas_hook_profile.so
-- Set runtime path of "/usr/local/lib/flexiblas/libflexiblas_hook_profile.so" to ""
-- Installing: /usr/local/lib/flexiblas/libflexiblas_hook_dummy.so
-- Set runtime path of "/usr/local/lib/flexiblas/libflexiblas_hook_dummy.so" to ""

Then when I link a program against libflexiblas, running ldd on my dso gives libflexiblas.so.3 => not found. But I checked and confirmed that libflexiblas.so is as expected in /usr/local/lib/.

Build failure on macOS

I thought that the build would pick up the default Apple BLAS. This is without any extra arguments to cmake.

-- Use user defined settings for Apple
-- Build extra BLAS interface: Apple
-- Libs: 1
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - not found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - not found
CMake Error at src/CMakeLists.txt:486 (MESSAGE):
  Provided BLAS library does not contain a BLAS implementation or does not
  link.

No LAPACK API version specified

LAPACK was updated to v3.10.1 in Fedora rawhide and now FlexiBLAS is FTBFS with the following error:

-- Use external LAPACK from /usr/lib64/liblapack_pic.a with assumed API_VERSION 3.10.1
CMake Error at cmake/lapack.cmake:175 (MESSAGE):
  No LAPACK API version specified.  Use the LAPACK_API_VERSION varaiable.

Apart from the typo ("varaiable" ;-) ), it seems that the version was correctly assumed first but then ignored? Is this expected?

3.1.0 build failures

I sent scratch builds to Fedora 35 and rawhide:

  • Builds are fine in F35. There's an error at the end because we had in the previous version:
$ ll /usr/lib64/libflexiblas*
lrwxrwxrwx. 1 root root      23 jul 22 02:19 /usr/lib64/libflexiblas64_api.so -> libflexiblas64_api.so.3
lrwxrwxrwx. 1 root root      25 jul 22 02:19 /usr/lib64/libflexiblas64_api.so.3 -> libflexiblas64_api.so.3.0
-rwxr-xr-x. 1 root root   15960 jul 22 02:20 /usr/lib64/libflexiblas64_api.so.3.0
lrwxrwxrwx. 1 root root      24 jul 22 02:19 /usr/lib64/libflexiblas64_mgmt.so -> libflexiblas64_mgmt.so.3
lrwxrwxrwx. 1 root root      26 jul 22 02:19 /usr/lib64/libflexiblas64_mgmt.so.3 -> libflexiblas64_mgmt.so.3.0
-rwxr-xr-x. 1 root root   49760 jul 22 02:20 /usr/lib64/libflexiblas64_mgmt.so.3.0
lrwxrwxrwx. 1 root root      19 jul 22 02:19 /usr/lib64/libflexiblas64.so -> libflexiblas64.so.3
lrwxrwxrwx. 1 root root      21 jul 22 02:19 /usr/lib64/libflexiblas64.so.3 -> libflexiblas64.so.3.0
-rwxr-xr-x. 1 root root 3880056 jul 22 02:20 /usr/lib64/libflexiblas64.so.3.0
lrwxrwxrwx. 1 root root      21 jul 22 02:19 /usr/lib64/libflexiblas_api.so -> libflexiblas_api.so.3
lrwxrwxrwx. 1 root root      23 jul 22 02:19 /usr/lib64/libflexiblas_api.so.3 -> libflexiblas_api.so.3.0
-rwxr-xr-x. 1 root root   15960 jul 22 02:20 /usr/lib64/libflexiblas_api.so.3.0
lrwxrwxrwx. 1 root root      22 jul 22 02:19 /usr/lib64/libflexiblas_mgmt.so -> libflexiblas_mgmt.so.3
lrwxrwxrwx. 1 root root      24 jul 22 02:19 /usr/lib64/libflexiblas_mgmt.so.3 -> libflexiblas_mgmt.so.3.0
-rwxr-xr-x. 1 root root   49752 jul 22 02:20 /usr/lib64/libflexiblas_mgmt.so.3.0
lrwxrwxrwx. 1 root root      17 jul 22 02:19 /usr/lib64/libflexiblas.so -> libflexiblas.so.3
lrwxrwxrwx. 1 root root      19 jul 22 02:19 /usr/lib64/libflexiblas.so.3 -> libflexiblas.so.3.0
-rwxr-xr-x. 1 root root 3872616 jul 22 02:20 /usr/lib64/libflexiblas.so.3.0

and now:

Processing files: flexiblas-netlib-3.1.0-1.fc35.x86_64
error: File not found: /builddir/build/BUILDROOT/flexiblas-3.1.0-1.fc35.x86_64/usr/lib64/libflexiblas.so.3.1
error: File not found: /builddir/build/BUILDROOT/flexiblas-3.1.0-1.fc35.x86_64/usr/lib64/libflexiblas_api.so.3.1
error: File not found: /builddir/build/BUILDROOT/flexiblas-3.1.0-1.fc35.x86_64/usr/lib64/libflexiblas_mgmt.so.3.1

Is this intentional? Should I just remove the library files with the minor version?

/usr/bin/ld: /tmp/cccPyAll.ltrans0.ltrans.o: in function `main':
    /usr/share/cmake/Modules/FortranCInterface/Verify/main.c:14: undefined reference to `VerifyFortran'
    collect2: error: ld returned 1 exit status

See the complete log e.g. here. Relevant differences? In F35 we have gcc 11.2.1; in rawhide, there's gcc 12.0.0.

Fedora38: `python3 -c 'import numpy'` aborts

I am trying to use numpy in a fedora 38 container:

python3 -c 'import numpy'
flexiblas Failed to get the BLAS backend (OPENBLAS-SERIAL) from the configuration.
Aborted (core dumped)

I have installed openblas-serial - but the error persists:
Package openblas-serial-0.3.21-4.fc38.x86_64 is already installed.

How can I debug and fix this?

Addition to Gentoo Science and query on a BLAS providing library's structure

I'm one of maintainer for the Gentoo Science repository and was hoping to add this package to the mix.
I saw that you had some instructions of how to use this on gentoo - https://www.mpi-magdeburg.mpg.de/2427308/flexiblas_install

That's pretty awesome!

I had a quick question about the structure of BLAS providers in general.
Is it mandated that the BLAS providing library (whichever it be) like ATLAS/OpenBLAS/CLBlast/BLIS/etc, needs to have all the symbols present in one SONAME library, like libopenblas or whatever?
Is it possible that some symbols are present in libcblas_provider.so and it loads another library libcblas_provider_helper.so that has the remaining symbols?
Is the monolithic structure of all symbols being present in libblas.so.3 a mandated specification?
I understand that there might not be many(/any) libraries which do this, but I just wanted to know if this is a requirement by NetLib.

Thanks a lot,
Aisha

Re adding to gentoo science - If you would rather be the maintainer for this in Gentoo, please let me know, or if you can give me the go ahead to add it would also be OK ๐Ÿ˜ธ
I seem to have seen some effort a few years ago but I don't think it went anywhere. We have been short on personnel in Gentoo and I just joined the team a few weeks back, so I'm trying to get the cool packages back in the repository ๐Ÿ˜บ

Static build of FlexiBLAS

Is it possible (technically) to have a static FlexiBLAS lib?
I tried configuring with BUILD_SHARED_LIBS=OFF but that errored out in the examples due to multiple symbols in libflexiblas and libflexiblas_api

Documentation on switching backends

I don't use flexiblas that often, so that I always forget how to switch between the different backends as well as which are available.

It would be nice to add somewhere examples such as:
FLEXIBLAS=openblas-openmp ./cmd
and
FLEXIBLAS=openblas-serial ./cmd

Similarly, if there is some way to figure out what options are available, it would be great if that could be documented.

Concerning what documentation I am aware of:
flexiblas --help
man flexiblas
http://www.mpi-magdeburg.mpg.de/projects/flexiblas (including link to install instructions)
https://github.com/mpimd-csc/flexiblas
https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager

After double checking I did notice there is some documentation available:
https://github.com/mpimd-csc/flexiblas#usage-example - however that is very hard to find as it is hidden between installation instructions, which I do not need, as all I do is dnf install bout++ or similar.

flexiblas fails to find OpenBLAS and blis, despite them being installed, but finds atlas and Accelerate

-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_Fortran: -fopenmp (found version "4.5") 
-- OpenBLAS-Serial:  Candidate: /opt/local/lib/libopenblas.dylib
-- OpenBLAS-Serial:  /opt/local/lib/libopenblas.dylib does not contain the Serial version of OpenBLAS.
-- Could NOT find OpenBLASSerial (missing: OpenBLASSerial_LIBRARY) 
-- OpenBLASSerial not found.
-- OpenBLAS-PThread:  Candidate: /opt/local/lib/libopenblas.dylib
-- OpenBLAS-PThread:  /opt/local/lib/libopenblas.dylib does not contain the PThread version of OpenBLAS.
-- Could NOT find OpenBLASPThread (missing: OpenBLASPThread_LIBRARY) 
-- OpenBLASPThread not found.
-- OpenBLAS-OpenMP:  Candidate: /opt/local/lib/libopenblas.dylib
-- OpenBLAS-OpenMP:  /opt/local/lib/libopenblas.dylib does not contain the OpenMP version of OpenBLAS.
-- Could NOT find OpenBLASOpenMP (missing: OpenBLASOpenMP_LIBRARY) 
-- OpenBLASOpenMP not found.
-- Could NOT find BlisSerial (missing: BlisSerial_LIBRARY) 
-- BlisSerial not found.
-- Could NOT find BlisPThread (missing: BlisPThread_LIBRARY) 
-- BlisPThread not found.
-- Could NOT find BlisOpenMP (missing: BlisOpenMP_LIBRARY) 
-- BlisOpenMP not found.
-- Search for MKL: mkl_gf_lp64 mkl_sequential mkl_core
-- MklSerial not found.
-- Search for MKL: mkl_gf_lp64 mkl_gnu_thread mkl_core
-- MklOpenMP not found.
-- PP: 
-- SP: 
-- MKL_TBB depends on TBB. Not Found.
-- MklTBB not found.
-- 
-- Search for ATLAS
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - found
-- BLAS Library ATLAS works with 64bit integers
-- Found BLAS: ATLAS (/opt/local/lib/libf77blas.a;/opt/local/lib/libtatlas.dylib;-lm)
-- Build extra BLAS interface: ATLAS
-- Libs: /opt/local/lib/libf77blas.a;/opt/local/lib/libtatlas.dylib;-lm
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for Fortran SCABS1
-- Looking for Fortran SCABS1 - not found
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - found
-- ATLAS does not provide a scabs1 function
-- Add CBLAS in dummy library
-- Extra Linker Flags: 
-- 
-- Search for Apple
-- Looking for Fortran dgemm
-- Looking for Fortran dgemm - found
-- BLAS Library Apple works with 64bit integers
-- Found BLAS: Apple (//System/Library/Frameworks/Accelerate.framework)
-- Build extra BLAS interface: Apple
-- Libs: //System/Library/Frameworks/Accelerate.framework
-- Performing Test ZDOTC_MKL
-- Performing Test ZDOTC_MKL - Failed
-- Looking for flexiblas_exit
-- Looking for flexiblas_exit - not found
-- Looking for Fortran DAXPY
-- Looking for Fortran DAXPY - found
-- Looking for Fortran MKL_DOMATCOPY
-- Looking for Fortran MKL_DOMATCOPY - not found
-- Looking for cblas_daxpy
-- Looking for cblas_daxpy - found
-- Apple does not provide a scabs1 function
-- Add CBLAS in dummy library
-- Extra Linker Flags: 
-- Default BLAS  not found. Use NETLIB instead.
-- Found hook directory.
-- Build profile hook.
-- Enable Testing...
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/sblat1.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/sblat2.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/sblat3.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/dblat1.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/dblat2.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/dblat3.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/cblat1.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/cblat2.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/cblat3.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/zblat1.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/zblat2.in
-- /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_flexiblas/flexiblas/work/flexiblas-3.3.1/test/blas/zblat3.in
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sysconfig
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sysconfig
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sysconfig
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sysconfig
-- Could NOT find PythonInterp (missing: PYTHON_INCLUDE_DIR) 
-- Running Summary
-- ------------------------------------------------
--       Final Configuration Status 
-- ------------------------------------------------
-- Build 8 byte integer: OFF
-- Build CBLAS interface: ON
-- Install path: /opt/local
-- Extra BLAS search path: /opt/local/lib/flexiblas/
-- LAPACK Support: ON
-- LAPACK_API_VERSION: 3.11.0
-- ABI: GNU
-- Interface to Extra BLAS Libraries:
--  /opt/local/lib/libf77blas.a;/opt/local/lib/libtatlas.dylib;-lm;gfortran - ATLAS 
--  //System/Library/Frameworks/Accelerate.framework;gfortran - APPLE 
-- Default BLAS: NETLIB

Cross-compilation issues

In Julia, we cross-compile the libraries for 13 platforms. The first step towards using flexiblas in Julia is to get it to build with our BinaryBuilder cross compilation system. Tests that need to be run at runtime generally do not work out. In this case, it looks like disabling openmp will be good enough. Any ideas how to do so?

[15:41:59] -- Try OpenMP C flag = [-fopenmp]
[15:41:59] -- Performing Test OpenMP_FLAG_DETECTED
[15:41:59] -- Performing Test OpenMP_FLAG_DETECTED - Success
[15:41:59] -- Try OpenMP Fortran flag = [-fopenmp]
[15:41:59] -- Performing Test OpenMP_FLAG_DETECTED
[15:41:59] -- Performing Test OpenMP_FLAG_DETECTED - Success
[15:41:59] -- Found OpenMP: -fopenmp  
[15:41:59] CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately:
[15:41:59]    OMP_RUN_STATE_C (advanced)
[15:41:59]    OMP_RUN_STATE_C__TRYRUN_OUTPUT (advanced)
[15:41:59] For details see /workspace/srcdir/flexiblas/build/TryRunResults.cmake
[15:41:59] -- Failed to determine OpenMP Version of the C Compiler
[15:41:59] CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately:
[15:41:59]    OMP_RUN_STATE_Fortran (advanced)
[15:41:59]    OMP_RUN_STATE_Fortran__TRYRUN_OUTPUT (advanced)
[15:41:59] For details see /workspace/srcdir/flexiblas/build/TryRunResults.cmake
[15:41:59] -- Failed to determine OpenMP Version of the Fortran Compiler

Here's the build recipe and the results on all platforms: JuliaPackaging/Yggdrasil#2248

CMakeLists set unsupported flags for Apple which break the build: -export_dynamic

/opt/local/bin/gcc-mp-12 -pipe -Os -DNDEBUG -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -std=c99 -fstack-protector-strong -fstack-clash-protection -D_FILE_OFFSET_BITS=64  -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -Wl,-rpath,/opt/local/lib/libgcc -L/opt/local/lib -lMacportsLegacySupport -rdynamic -Wl,-export_dynamic -o ../lib/libflexiblas_apple.dylib -install_name /opt/local/lib/libflexiblas_apple.dylib CMakeFiles/flexiblas_apple.dir/backends/generic/backend.c.o  -Wl,-rpath,/opt/local/lib -Wl,-framework,Accelerate -lgfortran 
gcc-mp-12: note: rdynamic is not supported
ld: unknown option: -export_dynamic
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libflexiblas_openblasopenmp.dylib] Error 1

Improving backend auto detection

Hi!

I just spent a few hours trying to understand why my Open BLAS and BLIS installations were not detected by cmake, until I realized that CMake's find_library was explicitly called with NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH in all the Find<blas_installation>.cmake files. Like in

FIND_LIBRARY(Blis${BLIS_LIB_NAME}_LIBRARY NAMES ${SEARCH_NAME} HINTS ${SEARCH_PATH} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH DOC "Blis-Serial Location")

Is that intentional? What's the rationale behind this?

In a lot of HPC environments, BLAS libs are made available to users through environment modules that set environment variables, and could expose installation paths in things like CMAKE_{PREFIX,INCLUDE,LIBRARY}_PATH.

By artificially limiting the scope of FIND_LIBRARY detection, and limiting it to OS-specific directories , CMake will be able to detect BLAS libraries that have been installed via OS package managers (as RPM or DEBs). But that's rarely the case on large-scale computing systems, where software installations often reside on shared, networked file systems.

Would it be possible to remove that limitation, and let CMake try to autodetect BLAS installations in other directories as well, as specified in CMAKE_*_PATH env variables, without having to manually specify a long list of -DEXTRA entries?

Happy to provide a PR if needed.
Thanks!

macOS support

Is there a recommended build process for macOS? I have brew installed cmake and OpenBLAS (no brew recipe for FlexiBLAS), then following the FlexiBLAS README Install, cmake configure fails with:

CMake Error at src/CMakeLists.txt:486 (MESSAGE):
  Provided BLAS library does not contain a BLAS implementation or does not
  link.
Call Stack (most recent call first):
  src/CMakeLists.txt:609 (Build_Extra_BLAS)

I am running macOS Monterey on Intel I5. Both vecLib and OpenBLAS are swappable directly under R but I would like to insert FlexiBLAS. I find the R flexiblas package very convenient for dynamic core control on clusters, where I use a hierarchy of parallel components: MPI-fork-OpenBLAS. It would be great to have the same BLAS control in R across laptop platforms to simplify teaching a transition to clusters.

building FlexiBLAS 3.0.4 with -DMKL_CUSTOM=ON fails

I'm seeing this when trying to build FlexiBLAS 3.0.4 on top of (only) imkl 2020.4.304 with GCC 10.2:

[ 73%] Linking C executable benchmark.INTEL_MKL_SEQ
cd /tmp/easybuild_obj/examples && /software/CMake/3.18.4-GCCcore-10.2.0/bin/cmake -E cmake_link_script CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/link.txt --verbose=1
/software/GCCcore/10.2.0/bin/gcc -O2 -ftree-vectorize -march=native -fno-math-errno -fPIC -std=c99 -D_FILE_OFFSET_BITS=64 -fopenmp -Wno-unused-parameter -O3 -DNDEBUG -L/software/imkl/2020.4.304-gompi-2020b/lib64 -L/software/imkl/2020.4.304-gompi-2020b/lib -L/software/BLIS/0.8.0-GCCcore-10.2.0/lib64 -L/software/BLIS/0.8.0-GCCcore-10.2.0/lib -L/software/OpenBLAS/0.3.12-GCC-10.2.0/lib64 -L/software/OpenBLAS/0.3.12-GCC-10.2.0/lib -L/software/GCCcore/10.2.0/lib64 -L/software/GCCcore/10.2.0/lib -rdynamic CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o -o benchmark.INTEL_MKL_SEQ  ../libcscutils/lib/libcscutils.a -lm -ldl -lgfortran -lm -lpthread -lgfortran -lm -lquadmath -lm
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemv: error: undefined reference to 'dgemv_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemv: error: undefined reference to 'dgemv_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemv: error: undefined reference to 'dgemv_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemv: error: undefined reference to 'dgemv_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemm: error: undefined reference to 'dgemm_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemm: error: undefined reference to 'dgemm_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemm: error: undefined reference to 'dgemm_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_dgemm: error: undefined reference to 'dgemm_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_daxpy: error: undefined reference to 'daxpy_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_daxpy: error: undefined reference to 'daxpy_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_daxpy: error: undefined reference to 'daxpy_'
CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/benchmark.c.o:benchmark.c:function benchmark_daxpy: error: undefined reference to 'daxpy_'
collect2: error: ld returned 1 exit status
make[2]: *** [examples/CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/build.make:107: examples/benchmark.INTEL_MKL_SEQ] Error 1
make[2]: Leaving directory '/tmp/easybuild_obj'
make[1]: *** [CMakeFiles/Makefile2:1044: examples/CMakeFiles/benchmark.INTEL_MKL_SEQ.dir/all] Error 2
make[1]: Leaving directory '/tmp/easybuild_obj'

Complete cmake command to configure the build was:

cmake -DCMAKE_INSTALL_PREFIX=/software/FlexiBLAS/3.0.4-gompi-2020b -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER='gcc' -DCMAKE_C_FLAGS='-O2 -ftree-vectorize -march=native -fno-math-errno' -DCMAKE_CXX_COMPILER='g++' -DCMAKE_CXX_FLAGS='-O2 -ftree-vectorize -march=native -fno-math-errno' -DCMAKE_Fortran_COMPILER='gfortran' -DCMAKE_Fortran_FLAGS='-O2 -ftree-vectorize -march=native -fno-math-errno' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE -DBLAS_AUTO_DETECT=ON -DMKL_CUSTOM=ON /tmp/flexiblas-3.0.4/

$MKLROOT was set to /software/imkl/2020.4.304-gompi-2020b/mkl, so the mkl subdirectory of the imkl installation.

Am I overlooking something? Do I need to do something extra to get the MKL wrapper libraries built?

My goal is to have a FlexiBLAS build on top of several backends (OpenBLAS, BLIS, imkl), where you can easily switch between them using export FLEXIBLAS=BLIS or export FLEXIBLAS=imkl. Is using -DMKL_CUSTOM=ON the right approach for that?
I also tried using -DEXTRA='BLIS;OpenBLAS,imkl' along with specifying -Dimkl_LIBRARY="...", but then I run into runtime errors like this:

INTEL MKL ERROR: /software/imkl/2020.4.304-gompi-2020b/mkl/lib/intel64/libmkl_avx2.so: undefined symbol: mkl_sparse_optimize_bsr_trsm_i8.
Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

LAPACK decompositions do not run in parallel

Reported in #1889069. Reproducible example:

$ docker run --rm -it fedora:33
$ dnf install -y wget python3-numpy
$ wget https://gist.githubusercontent.com/markus-beuckelmann/8bc25531b11158431a5b09a45abd6276/raw/660904cb770197c3c841ab9b7084657b1aea5f32/numpy-benchmark.py
$ python3 numpy-benchmark.py 
Dotted two 4096x4096 matrices in 0.62 s.
Dotted two vectors of length 524288 in 0.05 ms.
SVD of a 2048x1024 matrix in 7.41 s.
Cholesky decomposition of a 2048x2048 matrix in 1.18 s.
Eigendecomposition of a 2048x2048 matrix in 40.06 s.

Note the timings for SVD, Cholesky and Eigen decompositions. Now,

$ LD_PRELOAD=/lib64/libopenblaso.so.0 python3 numpy-benchmark.py 
Dotted two 4096x4096 matrices in 0.60 s.
Dotted two vectors of length 524288 in 0.04 ms.
SVD of a 2048x1024 matrix in 0.55 s.
Cholesky decomposition of a 2048x2048 matrix in 0.12 s.
Eigendecomposition of a 2048x2048 matrix in 5.89 s.

Strange annocheck reports

These reports keep bugging me, i.e. things like

Hardened: /usr/lib/flexiblas/libflexiblas_fallback_lapack.so: FAIL: glibcxx-assertions test because compiled without -D_GLIBCXX_ASSERTIONS (function: sgbbrd_) 
Hardened: /usr/lib/flexiblas/libflexiblas_fallback_lapack.so: info: For more information visit: https://sourceware.org/annobin/annobin.html/Test-glibcxx-assertions.html

Could this be a false positive due to the magic you do to reroute the calls? Because the flag is present and passed to every single compilation unit, as you can see in the logs. So I don't know why annocheck thinks these symbols were compiled without it.

flexiblas-openblas-openmp with OMP_PROC_BIND binds the program to a single core

When loading the openblas-openmp library in flexiblas.c, __flexiblas_dlopen is used, which calls dlopen on openblas-openmp twice. The first call is used to retrieve global variables such as "flexiblas_ld_global", and the value is used to make the second "actual" dlopen call.

However, when OMP_PROC_BIND is used, during the first dlopen call to openblas-openmp, openmp runtime will set the cpu affinity mask of the current thread to just the first cpu core. During the second dlopen call to openblas-openmp, this affinity mask will be picked up by the openmp runtime, and make the openmp runtime to think that the first cpu core is the only available cpu. Therefore, only the first cpu will be used when OMP_PROC_BIND is used with openblas-openmp and flexiblas.

Is there a way to use all cpu cores when cpu binding is used with openmp? Thank you!

Suffixed 64-bit integer symbols names

I did some research on the use of the suffixed function names for the 64bit integer build, and I found an inconsistency introduced by the way Julia introduced this suffix idea. It is no question that we need that suffixed symbol names to be able to mix 32 and 64 bit integer code without running into trouble. @ViralBShah, said that they added 64_ to all symbol names. That is true for Julia's OpenBLAS version and the ones compiled by the Fedora team, having the *64_ packages (@Enchufa2). But having a closer look the symbols we get the following cases:

  • Helper functions
     openblas_set_num_threads   -> openblas_set_num_threads64_
    
  • CBLAS functions
    cblas_dgemm -> cblas_dgemm64_
    
  • LAPACKE functions
     LAPACKE_dgetrf -> LAPACKE_dgetrf64_ 
    

These three types are fine and nothing to complain. But if somebody tries to use this inside its Fortran code (calling from Fortran):

  DGEMM -> DGEMM_64 

or using the Fortran interface from C ( or any other language over a C-like direct call):

 dgemm_  -> dgemm_64_ 

Both cases conflict are valid if one look from the generated symbol name, but they look strange and conflicting, from my point of view, with the way the direct C symbols are transformed. I would suggest doing the following: First add the suffix to the functions and then apply the Fortran -> Symbolname name mangling scheme. Because there a stil compilers around, that does not the underscore thing as the GNU compiler. Even adding the 64_ instead of 64 can cause trouble since some Fortran compilers add a second _ to the end of the symbol name whenever a function name contains a _.

So guys, @ViralBShah and @Enchufa2, I am open for a discussion about this.

segfault

Hi,

I encountered a segfault on fedora rawhide with BOUT++:

Thread 1 "command-args" received signal SIGSEGV, Segmentation fault.
0x00007fffef4eafff in flexiblas_exit () at /usr/src/debug/flexiblas-3.0.2-2.fc33.x86_64/src/flexiblas.c:841
841	        for ( k = __flexiblas_hooks->hooks_loaded-1; k>=0; k--){
(gdb) bt
#0  0x00007fffef4eafff in flexiblas_exit () at /usr/src/debug/flexiblas-3.0.2-2.fc33.x86_64/src/flexiblas.c:841
#1  0x00007ffff7fe1ce3 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
#2  0x00007ffff559c427 in __run_exit_handlers () from /lib64/libc.so.6
#3  0x00007ffff559c5d0 in exit () from /lib64/libc.so.6
#4  0x0000000000486dbf in bout::experimental::parseCommandLineArgs (argc=-10112, argv=<optimized out>) at bout++.cxx:303
#5  0x0000000000489ea5 in BoutInitialise (argc=@0x7fffffffdbdc: 2, argv=@0x7fffffffdbd0: 0x7fffffffdcd8) at bout++.cxx:138
#6  0x00000000004638f9 in main (argc=<optimized out>, argv=<optimized out>) at command-args.cxx:5
(gdb) 

This is while running this test with --help where it exits early, before the initialisation is fully finished.

Let me know if you need further infos.

Arch-independent config header

I was taking a look at the automated checks for the latest update, and there's this warning:

Undeclared file conflicts:
flexiblas-devel-3.3.1-1.fc39.i686 provides /usr/include/flexiblas/flexiblas_config.h which is also provided by flexiblas-devel-3.3.1-1.fc39.x86_64
flexiblas-devel-3.3.1-1.fc39.x86_64 provides /usr/include/flexiblas/flexiblas_config.h which is also provided by flexiblas-devel-3.3.1-1.fc39.i686

The issue is that both the i686 and x86_64 devel packages provide the same config header, but with different contents. This creates a conflict in multilib settings. I implemented this fix that basically renames the file as flexiblas_config-%{_arch}.h and replaces the original with an arch-independent stub (see this for further info).

Please, let me know if you see any issue with this approach. If this can be solved upstream, that would be nice. Otherwise, I'll leave this fix in place if you find no shortcomings.

macOS Ventura 13.2.1

I am building flexiblas-3.3.0 on macOS 13.2.1 with brew installed cmake version 3.26.0 and all up to date on x86_64-apple-darwin22.3.0. The gcc is Apple clang version 14.0.0.

make gets to 54% with the error below. Please let me know if this something that I misconfigured or a real issue on macOS.

Thanks,
George

[ 54%] Building C object src/CMakeFiles/flexiblas.dir/lapack_interface/wrapper/dsbgvd.c.o
[ 54%] Building C object src/CMakeFiles/flexiblas.dir/lapack_interface/wrapper/dsbgvx.c.o
[ 54%] Building C object src/CMakeFiles/flexiblas.dir/lapack_interface/wrapper/dsbtrd.c.o
[ 54%] Building C object src/CMakeFiles/flexiblas.dir/lapack_interface/wrapper/dsecnd.c.o
/Users/ost/Downloads/flexiblas-3.3.0/src/lapack_interface/wrapper/dsecnd.c:101:54: error: expected expression
double dsecnd(void){ return FC_GLOBAL(dsecnd,DSECND)(void); }
                                                     ^
/Users/ost/Downloads/flexiblas-3.3.0/src/lapack_interface/wrapper/dsecnd.c:125:66: error: expected expression
double flexiblas_real_dsecnd(void){return flexiblas_real_dsecnd_(void);}
                                                                 ^
/Users/ost/Downloads/flexiblas-3.3.0/src/lapack_interface/wrapper/dsecnd.c:155:68: error: expected expression
double flexiblas_chain_dsecnd(void){return flexiblas_chain_dsecnd_(void);}
                                                                   ^
3 errors generated.
make[2]: *** [src/CMakeFiles/flexiblas.dir/lapack_interface/wrapper/dsecnd.c.o] Error 1
make[1]: *** [src/CMakeFiles/flexiblas.dir/all] Error 2
make: *** [all] Error 2
GO2:build ost$ pwd
/Users/ost/Downloads/flexiblas-3.3.0/build
GO2:build ost$ cmake --version
cmake version 3.26.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).
GO2:build ost$ 

RFE: per-package default backend

From a distro point of view, a system-wide default works for most cases, but it would be nice to have a way to set a different default for certain packages in a future version.

For example, Fedora's current system-wide default, openblas-openmp, makes some scipy's tests crash randomly. A similar thing was observed for clblast. Checking with FLEXIBLAS=netlib is the safest option and solves all these problems, but it would be better to be able to set a different default altogether for these.

3.4.2 build fails with Intel compiler

I am attempting to build flexiblas for use with the Intel compilers, but the build fails.

cmake -B build-if-tst -DCMAKE_C_COMPILER=icx -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_INSTALL_PREFIX=/usr/local/intel
cmake --build build-if -j 16

results in a compile failure

[ 38%] Building C object src/CMakeFiles/flexiblas.dir/wrapper_blas_intel.c.o
/home/kr/build/flexiblas-3.4.2/src/wrapper_blas_intel.c:229:2: error: use of undeclared identifier 'hook_pos_caxpy'
  229 |         hook_pos_caxpy = 0;
      |         ^
/home/kr/build/flexiblas-3.4.2/src/wrapper_blas_intel.c:259:2: error: use of undeclared identifier 'hook_pos_ccopy'
  259 |         hook_pos_ccopy = 0;
      |         ^
...

Is this a supported configuration/build?

On a slightly deeper investigation:

> grep hook_pos_daxpy src/wrapper_blas_*.c
src/wrapper_blas_gnu.c:static TLS_STORE uint8_t hook_pos_daxpy = 0;
src/wrapper_blas_gnu.c: hook_pos_daxpy = 0;
src/wrapper_blas_gnu.c:    hook_pos_daxpy++;
src/wrapper_blas_gnu.c:    if ( hook_pos_daxpy < __flexiblas_hooks->daxpy.nhook ) {
src/wrapper_blas_gnu.c:        *(void **) &fn = __flexiblas_hooks->daxpy.f77_hook_function[hook_pos_daxpy];
src/wrapper_blas_gnu.c:        hook_pos_daxpy = 0;
src/wrapper_blas_intel.c:       hook_pos_daxpy = 0;

it does appear that these hook_pos_<blasname> variables are not used in the intel interface, and the attempt to set them likely comes from a mistaken patch or the like. Just deleting all of the references seems to work around the compile failure.

cat /etc/os-release 
NAME="openSUSE Leap"
VERSION="15.5"
...

icx --version
Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 (2024.0.2.20231213)

3.4.2: issue with build `flexiblas` binaries

I've manage to build my own flexiblas binaries and package all that as rpm package.
On top of that I've build my own python numpy binaries wiecha are using flexiblas however on any use of those numpy fails with core dump and flexiblas Failed to get the BLAS backend (OPENBLAS-OPENMP) from the configuration. message.
Fir example on building joblib python module documentation I have:

+ /usr/bin/sphinx-build -n -T -b man doc build/sphinx/man
Running Sphinx v7.2.6
flexiblas Failed to get the BLAS backend (OPENBLAS-OPENMP) from the configuration.
/var/tmp/rpm-tmp.Dgu6DF: line 59: 893244 Aborted                 (core dumped)

My understanding is that something is missing or even flexiblas is indirectly build however I'm struggling with diagnose this issue and error message does not point and what is missing/wwong.

May I ask for some help/hint? ๐Ÿค”

flexiblas was build using cmake params:

%cmake \
        -D CMAKE_SKIP_INSTALL_RPATH=ON \
        -D INTEGER8=OFF \
        -D SYS_BLAS_LIBRARY=-lblas \
        -D SYS_LAPACK_LIBRARY=-llapack \
        -D TESTS=ON \

and after install flexiblas package flexiblas list shows

[tkloczko@pers-jacek SPECS]$ flexiblas list
System-wide:
System-wide (config directory):
 NETLIB
   library = libflexiblas_netlib.so
   comment =
User config:
Host config:
Enviroment config:

and flexiblas print

[tkloczko@pers-jacek SPECS]$ flexiblas print
FlexiBLAS, version 3.4.2
Copyright (C) 2013-2024 Martin Koehler and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.


Configured BLAS libraries:
System-wide (/etc/flexiblasrc):

System-wide from config directory (/etc/flexiblasrc.d/)
 NETLIB
   library = libflexiblas_netlib.so
   comment =

User config (/home/tkloczko/.flexiblasrc):

Host config (/home/tkloczko/.flexiblasrc.pers-jacek):

Available hooks:

Backend and hook search paths:
  /usr/lib64/flexiblas/

Default BLAS:
    System:       OPENBLAS-OPENMP
    User:         (none)
    Host:         (none)
    Active Default: OPENBLAS-OPENMP (System)
Run-time properties:
   verbose = 0 (System)

ScaLAPACK error

Just to keep track of this (context: https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager).

ScaLAPACK fails to build against FlexiBLAS in Fedora with the following error:

/usr/bin/ld: /tmp/xdsep.uSTGUi.ltrans3.ltrans.o: in function `pdlaed3_':
/builddir/build/BUILD/scalapack-2.1.0/scalapack-2.1.0-mpich/SRC/pdlaed3.f:204:
undefined reference to `dlamc3_'
collect2: error: ld returned 1 exit status

Complete build.log here: https://koji.fedoraproject.org/koji/taskinfo?taskID=49164728

Int instead of int in standalone API

I've noticed that a number of functions have changed from int to Int in flexiblas_api.h. They are equal per the define on top of that header, but shouldn't this change in flexiblas_api_standalone.c too?

Windows support

Is flexiblas supported with mingw compilers on Windows? If it is known to work, I'd love to explore the use of flexiblas as the way we work with BLAS/LAPACK in Julia. Some discussion here JuliaLang/julia#4290

Old license in a couple of files

I see:

$ grep -r "As a special exception"
test/usage/python-numpy-scipy/numpy-scipy-benchmark.py:# As a special exception, the copyright holders of FlexiBLAS give you permission
src/flexiblas_api.h.in: * As a special exception, the copyright holders of FlexiBLAS give you permission

Notably the second one.

octave-statistics segfaults with flexiblas/openblaso

Reported here. It looks like with flexiblas enabled octave, octave-statistics now has a segfault in one of its tests:

https://koschei.fedoraproject.org/package/octave-statistics?collection=f34

   canoncorr.m .................................................
RPM build errors:
/var/tmp/rpm-tmp.PZIGXq: line 33: 915255 Segmentation fault      (core dumped)

The trace reported (same with openblas-serial succeeds):

FLEXIBLAS=/lib64/libopenblaso.so octave -H -q --no-window-system --no-site-file --eval 'pkg("local_list",fullfile("/home/orion/rpmbuild/BUILDROOT/octave-statistics-1.4.1-6.fc34.x86_64/usr/share/octave","octave_packages"));pkg("load","statistics");test("/home/orion/rpmbuild/BUILDROOT/octave-statistics-1.4.1-6.fc34.x86_64/usr/share/octave/packages/statistics-1.4.1/canoncorr.m");'
OpenJDK 64-Bit Server VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified (value = "org.octave.OctClassLoader"). To use archived non-system classes, this property must be not be set
Segmentation fault (core dumped)


Thread 1 "octave-cli-5.2." received signal SIGSEGV, Segmentation fault.
0x00007ffff0f1eb19 in dsyrk_thread_UT (args=0x7fffffff8db0, range_m=0x0, range_n=0x0, sa=0x7fffb4d31000, sb=0x7fffb4e31000, mypos=0) at level3_syrk_threaded.c:508
508     int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){
(gdb) bt
#0  0x00007ffff0f1eb19 in dsyrk_thread_UT (args=0x7fffffff8db0, range_m=0x0, range_n=0x0, sa=0x7fffb4d31000, sb=0x7fffb4e31000, mypos=0) at level3_syrk_threaded.c:508
#1  0x00007ffff0e2152f in dsyrk_ (UPLO=<optimized out>, TRANS=<optimized out>, N=<optimized out>, K=<optimized out>, alpha=<optimized out>, a=<optimized out>, ldA=0x7fffffff8ef0, beta=0x7fffffff8f20, c=0x555555f1faa0,
     ldC=0x7fffffff8ed8) at syrk.c:370
#2  0x00007ffff67ac436 in _Z5xgemmRK6MatrixS1_15blas_trans_typeS2_ (a=..., b=..., transa=blas_trans, transb=blas_no_trans) at liboctave/array/Array.h:582
#3  0x00007ffff75336ee in oct_binop_trans_mul (a1=..., a2=...) at libinterp/octave-value/ov-re-mat.cc:145
#4  0x00007ffff781ab44 in do_binary_op (ti=..., op=octave_value::op_herm_mul, v1=..., v2=...) at libinterp/octave-value/ov.cc:2407


(gdb) list
503     #endif
504
505       return 0;
506     }
507
508     int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){
509
510       blas_arg_t newarg;
511
512     #ifndef USE_ALLOC_HEAP
(gdb) up
#1  0x00007ffff0e2152f in dsyrk_ (UPLO=<optimized out>, TRANS=<optimized out>, N=<optimized out>, K=<optimized out>, alpha=<optimized out>, a=<optimized out>, ldA=0x7fffffff8ef0, beta=0x7fffffff8f20, c=0x555555f1faa0,
     ldC=0x7fffffff8ed8) at syrk.c:370
370         (syrk[4 | (uplo << 1) | trans ])(&args, NULL, NULL, sa, sb, 0);
(gdb) up
#2  0x00007ffff67ac436 in _Z5xgemmRK6MatrixS1_15blas_trans_typeS2_ (a=..., b=..., transa=blas_trans, transb=blas_no_trans) at liboctave/array/Array.h:582
582       const T * data (void) const { return slice_data; }
(gdb) print a
$1 = (const class Matrix &) @0x7fffffff9020: {<NDArray> = {<MArray<double>> = {<Array<double>> = {_vptr.Array = 0x7ffff7f95750 <vtable for Matrix+16>, dimensions = {rep = 0x555555f04180}, rep = 0x555555f45dc0,
         slice_data = 0x555555f07200, slice_len = 20}, <No data fields>}, <No data fields>}, <No data fields>}
(gdb) print b
$2 = (const class Matrix &) @0x7fffffff8ff0: {<NDArray> = {<MArray<double>> = {<Array<double>> = {_vptr.Array = 0x7ffff7f95750 <vtable for Matrix+16>, dimensions = {rep = 0x555555f04180}, rep = 0x555555f45dc0,
         slice_data = 0x555555f07200, slice_len = 20}, <No data fields>}, <No data fields>}, <No data fields>}

Reporting here because we don't know whether this is flexiblas' or openblas' fault. If the latter, we may need to change the system-wide default. Please, let me know if you need anything else.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.