不确定我的 Python/numpy 版本是否使用优化的 BLAS/LAPACK 库?
Unsure whether my version of Python/numpy is using optimized BLAS/LAPACK libraries?
我读 here "make sure that numpy uses optimized version of BLAS/LAPACK libraries on your system."
很重要
当我输入:
import numpy as np
np.__config__.show()
我得到以下结果:
blas_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
openblas_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
这是否意味着我的 numpy 版本正在使用优化的 BLAS/LAPACK 库,如果不是,我如何设置 numpy 使其使用优化版本?
有点。 OpenBLAS 非常好。我刚刚拿了第一个 link,我可以在 google 上找到 "OpenBLAS, ATLAS, MKL comparison"。
http://markus-beuckelmann.de/blog/boosting-numpy-blas.html
现在,这还不是全部。根据您需要的算法,差异可能不会/略有/有很大不同。除了针对不同的实现 运行 您自己的代码 link 之外,真的没有什么可以做的了。
我最喜欢的各种线性代数问题、SVD、Eigs、实逆和伪逆、因式分解……不同 OSes 上的单核/多核:
MacOS:加速框架(随 OS 一起提供)
Linux/Windows:
- MKL
- 距离很远但仍然很安静:ATLAS 和 OpenBLAS 相当
- 即使在 AMD 处理器上,ACML 也一直令我失望
TLDR:您的设置没问题。但是如果你想从你的 CPU / RAM / 主板组合中挤出最后一滴血,你需要 MKL。它当然有相当大的价格标签,但如果你能在 return 中买到一半价格的硬件,也许是值得的。如果您编写开源包,您可以免费使用 MKL 进行开发。
要跟踪在 MacOS 上加载了哪些库,
export DYLD_PRINT_LIBRARIES # see man dyld
并查看 xx.dylib
或 xx.so
将依次加载哪些库,
otool -L xx.dylib
(抱歉,不知道其他平台)。
另一个问题是,这重要吗? MacOS Accelerate、Openblas、MKL ... 有何不同?
测量不同用户问题、库的运行时间,
编译器、多核、内存……是一项艰巨的任务。
有谁知道网上有一个广泛的测试台,比
benchmarking-python-vs-c-using-blas-and-numpy
从 2014 年开始 ?
另请参阅:
google openblas benchmark macos python:
31000 次点击
numpy-site.cfg
(由 pip 使用 -> setup.py)提到了几个 BLAS / LAPACK 替代品,
"haven't been benchmarked with NumPy or SciPy yet".
我读 here "make sure that numpy uses optimized version of BLAS/LAPACK libraries on your system."
很重要当我输入:
import numpy as np
np.__config__.show()
我得到以下结果:
blas_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
openblas_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/home/anaconda3/lib']
language = c
define_macros = [('HAVE_CBLAS', None)]
这是否意味着我的 numpy 版本正在使用优化的 BLAS/LAPACK 库,如果不是,我如何设置 numpy 使其使用优化版本?
有点。 OpenBLAS 非常好。我刚刚拿了第一个 link,我可以在 google 上找到 "OpenBLAS, ATLAS, MKL comparison"。
http://markus-beuckelmann.de/blog/boosting-numpy-blas.html
现在,这还不是全部。根据您需要的算法,差异可能不会/略有/有很大不同。除了针对不同的实现 运行 您自己的代码 link 之外,真的没有什么可以做的了。
我最喜欢的各种线性代数问题、SVD、Eigs、实逆和伪逆、因式分解……不同 OSes 上的单核/多核:
MacOS:加速框架(随 OS 一起提供) Linux/Windows:
- MKL
- 距离很远但仍然很安静:ATLAS 和 OpenBLAS 相当
- 即使在 AMD 处理器上,ACML 也一直令我失望
TLDR:您的设置没问题。但是如果你想从你的 CPU / RAM / 主板组合中挤出最后一滴血,你需要 MKL。它当然有相当大的价格标签,但如果你能在 return 中买到一半价格的硬件,也许是值得的。如果您编写开源包,您可以免费使用 MKL 进行开发。
要跟踪在 MacOS 上加载了哪些库,
export DYLD_PRINT_LIBRARIES # see man dyld
并查看 xx.dylib
或 xx.so
将依次加载哪些库,
otool -L xx.dylib
(抱歉,不知道其他平台)。
另一个问题是,这重要吗? MacOS Accelerate、Openblas、MKL ... 有何不同? 测量不同用户问题、库的运行时间, 编译器、多核、内存……是一项艰巨的任务。 有谁知道网上有一个广泛的测试台,比 benchmarking-python-vs-c-using-blas-and-numpy 从 2014 年开始 ?
另请参阅:
google openblas benchmark macos python:
31000 次点击
numpy-site.cfg (由 pip 使用 -> setup.py)提到了几个 BLAS / LAPACK 替代品, "haven't been benchmarked with NumPy or SciPy yet".