我在这里读到,"确保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,以便使用优化版本?
一种。OpenBlas很好。我刚刚取了第一个链接,我可以在Google上找到" openblas,atlas,mkl比较"。
http://markus-beuckelmann.de/blog/boosting-numpy-blas.html
现在,这不是整个故事。根据所需的算法,差异可能不是/略有不同。实际上,没有什么比运行自己的代码相对于不同的实现了。
我在各种线性代数问题,SVD,EIG,真实和伪倒置,分解...对不同的OSS上的单核/多核算中的平均最喜欢的人:
:macOS:加速框架(与操作系统一起出现)Linux/Windows:
- MKL
- 距离很远,但仍然很安静:Atlas和Openblas on Par
- ACML即使在AMD处理器上也一直令人失望
tldr:您的设置很好。但是,如果您想从CPU/RAM/主板组合中挤出最后一滴血液,则需要MKL。当然,它的价格很高,但是如果您可以将硬件一半的回报付出,那么也许值得。而且,如果您编写开源包,则可以免费使用MKL用于开发目的。
跟踪在macOS上加载的库,
export DYLD_PRINT_LIBRARIES # see man dyld
,要查看libs xx.dylib
或 xx.so
依次加载的
otool -L xx.dylib
(对不起,不知道其他平台)。
另一个问题是,这有关系吗?MacOS加速,OpenBlas,MKL ...?用不同的用户问题,库,测量运行时,编译器,多核,回忆...是一个艰巨的任务。有人知道网络上有大范围的测试台吗?基准测试 - python-vs-c-c-using-blas and-numpy从2014年开始?
另请参见:
Google OpenBlas Benchmark Macos Python:31000命中
numpy-site.cfg(由pip-> setup.py使用)提到了几个blas/lapack替代方案,"尚未通过numpy或scipy进行基准测试"。
numpy和Scipy放弃了对加速的支持在2018年。