纽比.dot慢了还装了blas和lapack,怎么修?

2024-04-29 02:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在ArchLinux上运行,我的python版本是2.7.8,并且安装了BLAS和{}:

% pacman -Qs blas; pacman -Qs lapack
local/blas 3.5.0-1
    Basic Linear Algebra Subprograms
local/lapack 3.5.0-1
    Linear Algebra PACKage

Numpy已通过sudo pip2 install numpy安装,它确认它同时看到BLAS和{}:

^{pr2}$

然而,我对np.dot操作的速度测试远远超过30秒,因为我知道在一台类似的机器上,它运行得很好,不到10秒。如何解决速度问题?在安装支持BLASLAPACK的numpy时,我是否遗漏了一些内容?在


Tags: 版本numpypackagebasiclocalpacman速度blas
2条回答

好吧,这就是整个故事。首先,初始设置很慢,因为BLAS是一个参考实现,其设计不是很快。我重复一次,到今天为止,ArchLinux额外存储库中的包blas是参考实现。有关详细信息,请参见Presentation部分here。在

第二,有BLAS的优化版本(实际上,相当多的版本:ATLAS、OpenBlas、Goto BLAS、MKL等等,毫无疑问)。它们的安装相当棘手。我最终安装了OpenBlas,下面是在ArchLinux上安装OpenBlas的一步一步的概述:

  1. 安装openblas-lapackpackage from the AUR
  2. 按照我的理解,安装python2-numpy-openblaspackage from the AUR,它与普通的python2-numpy包不同,site.cfg配置文件指示{}搜索我们在步骤1中安装的openblas库。在

这些动作为我解决了问题,现在的速度比我在问题中提到的测试1秒以下要好得多。另外,numpy还显示它是用openblas编译的:

>>> np.show_config()
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib']
    language = f77
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib']
    language = f77
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib']
    language = f77
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib']
    language = f77
blas_mkl_info:
  NOT AVAILABLE

我相信为python3设置openblas的过程看起来非常相似。在

我的建议是从源代码构建“numpy”,并将其与BLAS和LAPACK链接起来。在

相关问题 更多 >