找出Numpy是否使用哪个BLAS库

找出Numpy是否使用哪个BLAS库,第1张

找出Numpy是否/使用哪个BLAS库

numpy.show_config()
并不总是提供可靠的信息。例如,如果我
apt-get install python-numpy
在Ubuntu
14.04上,输出
np.show_config()
如下所示:

blas_info:    libraries = ['blas']    library_dirs = ['/usr/lib']    language = f77lapack_info:    libraries = ['lapack']    library_dirs = ['/usr/lib']    language = f77atlas_threads_info:  NOT AVAILABLEblas_opt_info:    libraries = ['blas']    library_dirs = ['/usr/lib']    language = f77    define_macros = [('NO_ATLAS_INFO', 1)]atlas_blas_threads_info:  NOT AVAILABLEopenblas_info:  NOT AVAILABLElapack_opt_info:    libraries = ['lapack', 'blas']    library_dirs = ['/usr/lib']    language = f77    define_macros = [('NO_ATLAS_INFO', 1)]...

看起来numpy正在使用标准CBLAS库。但是,我知道numpy使用的是OpenBLAS,它是通过

libopenblas-dev
软件包安装的。


检查*
nix的最明确方法是

ldd
在运行时查找numpy链接所针对的共享库(我没有Mac,但我认为可以
otool-L
代替
ldd
)。

  • 对于低于v1.10的numpy版本:
    ~$ ldd /<path_to_site-packages>/numpy/core/_dotblas.so

如果

_dotblas.so
不存在,则可能意味着numpy最初编译时numpy无法检测到任何BLAS库,在这种情况下,它根本不构建任何依赖于BLAS的组件。

  • 对于numpy v1.10及更高版本:

_dotblas.so
已被删除,但您可以
multiarray.so
改为检查其依赖项:

    ~$ ldd /<path_to_site-packages>/numpy/core/multiarray.so

查看我通过

apt-get
以下方式安装的numpy版本

~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so     linux-vdso.so.1 =>  (0x00007fff12db8000)    libblas.so.3 => /usr/lib/libblas.so.3 (0x00007fce7b028000)    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fce7ac60000)    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fce7a958000)    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fce7a738000)    /lib64/ld-linux-x86-64.so.2 (0x00007fce7ca40000)

/usr/lib/libblas.so.3
实际上是符号链接链的开始。如果使用跟随他们达到最终目标
readlink-e
,我会看到他们指向我的OpenBLAS共享库:

~$ readlink -e /usr/lib/libblas.so.3/usr/lib/openblas-base/libblas.so.3


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5639677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存