Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让NumPy在Ubuntu中使用OpenBlas?_Numpy_Ubuntu 14.04_Blas_Openblas - Fatal编程技术网

如何让NumPy在Ubuntu中使用OpenBlas?

如何让NumPy在Ubuntu中使用OpenBlas?,numpy,ubuntu-14.04,blas,openblas,Numpy,Ubuntu 14.04,Blas,Openblas,我安装了BLAS和OpenBLAS: $ dpkg -l \*blas\* | grep ^i ii libblas-dev 1.2.20110419-7 amd64 Basic Linear Algebra Subroutines 3, static library ii libblas3

我安装了BLAS和OpenBLAS:

$ dpkg -l \*blas\* | grep ^i
ii  libblas-dev                                           1.2.20110419-7                                      amd64        Basic Linear Algebra Subroutines 3, static library
ii  libblas3                                              1.2.20110419-7                                      amd64        Basic Linear Algebra Reference implementations, shared library
ii  libopenblas-base                                      0.2.8-6ubuntu1                                      amd64        Optimized BLAS (linear algebra) library based on GotoBLAS2
ii  libopenblas-dev                                       0.2.8-6ubuntu1                                      amd64        Optimized BLAS (linear algebra) library based on GotoBLAS2
然而,NumPy仍然表示OpenBLAS不可用:

>> np.__config__.show()
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)]
atlas_info:
  NOT AVAILABLE
lapack_mkl_info:
  NOT AVAILABLE
blas_mkl_info:
  NOT AVAILABLE
atlas_blas_info:
  NOT AVAILABLE
mkl_info:
  NOT AVAILABLE
我怎样才能解决这个问题

我不认为我可以直接卸载
libblas3
,因为很多东西都依赖它,包括
libblas dev
,甚至
libopenblas dev
都依赖它

我试过了

$ sudo apt-get install --reinstall python-numpy
但这没用

这尤其令人惊讶,因为链接到OpenBLAS的
numpy
中的所有
*.so
文件:

$ ldd `find /usr/lib/python2.7/dist-packages/numpy -name \*\.so` | grep libblas
        libblas.so.3 => /usr/lib/libblas.so.3 (0x00007fba2ac96000)
        libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f04f7f54000)
        libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f9a941a9000)

$ ls -l /usr/lib/libblas.so.3 /etc/alternatives/libblas.so.3
lrwxrwxrwx 1 root root 35 Oct 22  2014 /etc/alternatives/libblas.so.3 -> /usr/lib/openblas-base/libblas.so.3
lrwxrwxrwx 1 root root 30 Oct  6  2014 /usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3

根据
ldd
输出,NumPy必须已经与OpenBLAS链接。它只是不知道它,因为它是通过
/usr/lib/libblas*
链接的,它认为它是通用的BLAS。

在Ubuntu 16.10上,你可以

$ apt install libopenblas-base
并使用

$ update-alternatives --config libblas.so.3
我做了,然后跑了

import numpy as np
a1 = np.random.rand(10000, 10000)
a2 = np.random.rand(10000, 10000)
np.dot(a1, a2)
使用libblas(2m38s,仅单芯负载)和libopenblas(0m18s,多芯负载)


编辑:这是通过Ubuntu的官方存储库安装的Python和numpy,而不是pip。

这个答案虽然被接受,但没有提到具体的解决方法。如何才能让NumPy“知道”它与OpenBLAS有关联?尽管我很好奇答案是什么,但这可能与我的情况无关。我的输出几乎与本文中的输出相同,除了一行提示这个被接受的解决方案-ldd'find/usr/lib/python2.7/dist-packages/numpy-name*\.所以在我的情况下,'| grep libblas在该目录中没有找到任何这样的文件。那么这对我来说意味着什么呢?最重要的是,我该怎么办?@Rafael_Espericueta就我而言,没有必要做任何事情。在您的情况下,假设您正确地描述了它,您甚至可能没有从apt安装python blas(我真的不想再次猜测您可能已经安装了python blas,或者您的目标是什么)