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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)