我通常从here获取最新的科学Python包。我注意到有两个版本的numpy
可用 - 标准版和MKL版。我的问题:
我们是否需要拥有英特尔的专有库来运行MKL版本?我问这个是因为从上面的链接安装MKL版本numpy似乎工作得很好 - 我也没有看到任何性能改进。这让我很好奇,我根据答案here运行了这个命令np.__config__.show()
,它给了我以下内容:
lapack_opt_info:
libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd']
library_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/include']
blas_opt_info:
libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd']
library_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/include']
openblas_lapack_info:
NOT AVAILABLE
lapack_mkl_info:
libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd']
library_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/include']
blas_mkl_info:
libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd']
library_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/include']
mkl_info:
libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'libiomp5md', 'libifportmd']
library_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/lib/intel64']
define_macros = [('SCIPY_MKL_H', None)]
include_dirs = ['C:/Program Files (x86)/Intel/Composer XE/mkl/include']
所以我尝试浏览目录C:/Program Files (x86)/Intel/Composer XE/mkl/include
以查看是否有任何内容 - 但我没有安装这些库。理想情况下它应该不正常,因为文件丢失了?
答案 0 :(得分:2)
至1:
许多人使用Gohlke基于MKL的库的主要原因 - afaik - 就是那里没有免费的64位Fortran编译器。因此,使用MKL主要不是基于性能原因。 检查例如对这个答案的评论: https://stackoverflow.com/a/11200146/2319400
到2:
不,你不需要它们。正如Christoph Gohlke的网站告诉你的那样:
Numpy + MKL与英特尔®数学核心函数库静态链接。 Numpy + MKL在numpy.core目录中包含Intel C ++和Fortran的运行时库。
因此,他在编译期间需要这些库 - 您不需要它们。这就是“静态”链接的要点:链接库中的所有功能都包含在编译过程之后的numpy库中。