How to check BLAS/LAPACK linkage in NumPy and SciPy? How to check BLAS/LAPACK linkage in NumPy and SciPy? python python

How to check BLAS/LAPACK linkage in NumPy and SciPy?


The method numpy.show_config() (or numpy.__config__.show()) outputs information about linkage gathered at build time. My output looks like this. I think it means I am using the BLAS/LAPACK that ships with Mac OS.

>>> import numpy as np>>> np.show_config()lapack_opt_info:    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']    extra_compile_args = ['-msse3']    define_macros = [('NO_ATLAS_INFO', 3)]blas_opt_info:    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']    define_macros = [('NO_ATLAS_INFO', 3)]


What you are searching for is this:system info

I compiled numpy/scipy with atlas and i can check this with:

import numpy.distutils.system_info as sysinfosysinfo.get_info('atlas')

Check the documentation for more commands.


You can use the link loader dependency tool to look at the C level hook components of your build and see whether they have external dependencies on your blas and lapack of choice. I am not near a linux box right now, but on an OS X machine you can do this inside the site-packages directory which holds the installations:

$ otool -L numpy/core/_dotblas.so numpy/core/_dotblas.so:    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)    /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 268.0.1)$ otool -L scipy/linalg/flapack.so scipy/linalg/flapack.so (architecture i386):    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)    /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)    /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)scipy/linalg/flapack.so (architecture ppc):    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)    /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)$ otool -L scipy/linalg/fblas.so scipy/linalg/fblas.so (architecture i386):    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)    /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)    /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib (compatibility version 1.0.0, current version 242.0.0)scipy/linalg/fblas.so (architecture ppc):    /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)    /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)

substitute ldd in place of otool on a gnu/Linux system and you should get the answers you need.