我读过here,重要的是“确保numpy在系统上使用BLAS / LAPACK库的优化版本。”
当我输入时:
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使其使用优化的版本?
答案 0 :(得分:1)
种类。 OpenBLAS很好。我刚上了第一个链接,我可以在Google上找到“ OpenBLAS,ATLAS,MKL比较”。
http://markus-beuckelmann.de/blog/boosting-numpy-blas.html
现在,这还不是全部。根据所需要的算法,差异可能不会/会略有不同/相差很大。实际上,除了运行针对不同实现的链接的自己的代码外,没有什么可以做的。
在各种线性代数问题,SVD,Eig,实数和伪取反,因式分解...在不同操作系统上的单核/多核方面,我的平均偏爱:
MacOS:加速的框架(与OS一起提供) Linux / Windows:
TLDR:您的设置很好。但是,如果您想从CPU / RAM /主板组合中挤出最后一滴血,则需要MKL。它当然带有相当大的价格标签,但是如果您得到的硬件回报是价格的一半,也许值得。而且,如果您编写了一个开源软件包,则可以出于开发目的免费使用MKL。
答案 1 :(得分:0)
要跟踪在MacOS上加载了哪些库,
export DYLD_PRINT_LIBRARIES # see man dyld
并查看库xx.dylib
或xx.so
会依次加载什么,
otool -L xx.dylib
(对不起,不了解其他平台)。
另请参阅:
google openblas benchmark macos python:
31000 ...
numpy-site.cfg (由pip-> setup.py使用)提到了几种BLAS / LAPACK替代方案, 其中“尚未通过NumPy或SciPy进行基准测试”。