您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

找出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 = f77
lapack_info:
    libraries = ['lapack']
    library_dirs = ['/usr/lib']
    language = f77
atlas_threads_info:
  NOT AVAILABLE
blas_opt_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]
atlas_blas_threads_info:
  NOT AVAILABLE
openblas_info:
  NOT AVAILABLE
lapack_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)。

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

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

_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
其他 2022/1/1 18:28:21 有428人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶