【问题标题】:numpy MKL vs Standard - What are the requirements?numpy MKL 与标准 - 有什么要求?
【发布时间】:2015-05-05 21:01:45
【问题描述】:

我通常从here 获得最新的科学 Python 包。我注意到有两个版本的numpy 可用 - 标准和 MKL 版本。我的问题:

  1. 我们实际上从中获得了多少性能改进 切换到 MKL 版本?有没有人在真实数据集和问题上测试后有基准?
  2. 我们是否需要英特尔的专有库才能运行 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 以查看是否有任何内容 - 但我没有安装这些库。所以理想情况下它不应该因为文件丢失而无法正常工作?

【问题讨论】:

    标签: python numpy intel-mkl


    【解决方案1】:

    到1:

    许多人使用 Gohlke 的基于 MKL 的库 - afaik - 的主要原因是,没有适用于 Windows 的免费 64 位 fortran 编译器。所以使用 MKL 并不是主要基于性能的原因。 检查例如这个答案的cmets: https://stackoverflow.com/a/11200146/2319400

    到2:

    不,你不需要它们。正如 Christoph Gohlke 的网站告诉您的那样:

    Numpy+MKL 静态链接到英特尔® 数学核心函数库。 Numpy+MKL 在 numpy.core 目录中包含 Intel C++ 和 Fortran 的运行时库。

    所以,他在编译过程中需要这些库——你不需要它们。这就是“静态”链接的意义:链接库中的所有功能都包含在编译过程之后的 numpy 库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-25
      • 2019-10-17
      • 2017-09-05
      • 2015-02-11
      • 2017-08-25
      • 2014-09-18
      • 2015-11-26
      • 2018-08-04
      相关资源
      最近更新 更多