gpt4 book ai didi

python - numpy.dot 速度很慢,但安装了 blas 和 lapack,如何解决?

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:48 24 4
gpt4 key购买 nike

我在 ArchLinux 上运行,我的 python 版本是 2.7.8 并且 BLASLAPACK 都是安装:

% 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 安装,它确认它同时看到 BLASLAPACK:

>>> numpy.show_config()
blas_info:
libraries = ['blas']
library_dirs = ['/usr/lib64']
language = f77
lapack_info:
libraries = ['lapack']
library_dirs = ['/usr/lib64']
language = f77
atlas_threads_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['blas']
library_dirs = ['/usr/lib64']
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/lib64']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
openblas_lapack_info:
NOT AVAILABLE
atlas_info:
NOT AVAILABLE
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
atlas_blas_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE

然而,我对 np.dot 操作的速度测试远远超过 30 秒,而我知道在类似的机器上它运行不到 10 秒。如何解决速度问题?在安装支持 BLASLAPACK 的 numpy 时,我错过了什么吗?

最佳答案

好了,这就是整个故事。首先,初始设置很慢,因为 BLAS 是一个引用实现,它的设计目的并不是为了快速。我重复一遍,截至今天,ArchLinux Extra 存储库中的包 blas 是引用实现。有关详细信息,请参阅 Presentation 部分 here .

其次,BLAS 有优化版本(实际上有很多:ATLAS、OpenBlas、Goto BLAS、MKL 等等,毫无疑问)。它们安装起来相当棘手。我最终安装了 OpenBlas,这是在 ArchLinux 上执行此操作的分步概述:

  1. 安装openblas-lapack package from the AUR
  2. 安装python2-numpy-openblas package from the AUR据我了解,它与普通的 python2-numpy 包的区别在于 site.cfg 配置文件,它指示 numpy 进行搜索我们在步骤 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 设置面向 openblasnumpy 的过程看起来非常相似。

关于python - numpy.dot 速度很慢,但安装了 blas 和 lapack,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27199822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com