MKL 优化

英特尔™ 数学内核库 (MKL) 专为科学、工程和金融计算而开发,是一组线程化和矢量化的数学例程,可用于加速各种数学函数和应用程序。Anaconda 已将一些最流行的数值/科学 Python 库的 MKL 驱动的二进制版本打包到 MKL 优化中,以提高性能。

MKL 优化包括:
  • 速度提升的 NumPy、SciPy、scikit-learn 和 NumExpr
  • MKL 与 Anaconda 中的可再发行二进制文件的打包,以便于访问 MKL 运行​​时库。
  • Python 绑定到低级 MKL 服务函数,允许修改运行时使用的线程数。

安装

在 Anaconda 2.5 及更高版本中,MKL默认在 Anaconda 中免费提供

如果您已经安装了免费的Anaconda Python 发行版,请通过升级到最新版本来获取 MKL:

conda update conda
conda update anaconda

如果你没有安装 Anaconda,你可以在这里下载 。

可以使用图形 Anaconda Navigator 许可证管理器或通过操作系统手动查看和删除现有的 MKL 许可证。

配置

Anaconda 现在还包含一个名为mkl-service的小型实用程序包 ,它为 中声明的一些有用的 MKL 函数提供 Python 接口mkl_service.h,例如设置要使用的线程数。

卸载 MKL

MKL 大约需要 100MB,有些用例不需要它,因此用户可以选择退出 MKL,转而使用适用于 Linux 的OpenBLAS或适用于 MacOSX 的本机 Accelerate Framework。要选择退出,运行 ,然后使用安装程序包通常会包括MKL或取决于包括MKL包,如,和 。Conda 将安装这些软件包的非 MKL 版本及其依赖项。如果您使用的是 OS X 或 Linux,已经安装了这些软件包或已经安装了所有 Anaconda,并且希望从 MKL 切换,请使用 后跟.conda install nomklconda installscipynumpypandasconda install nomkl numpy scipy scikit-learn numexprconda remove mkl mkl-service

更新

如果您已经安装了免费的 Anaconda Python 发行版并希望更新 MKL:

conda update conda
conda update mkl

解除 MKL 试验警告

因为 Anaconda 的过去版本默认不包含 MKL 链接的二进制文件,一些使用过的用户可能会看到 MKL 试用警告或许可证到期错误,即使 MKL 链接包现在是免费的并且默认安装。许可证到期错误消息可能会显示为“您无法再在没有许可证的情况下运行 MKL。”conda update --all

要解决此问题,请将您的安装设置为使用不需要许可证的 mkl 链接库:

conda remove mkl-rt
conda install -f mkl

然后使用您选择的特定软件包运行 conda install:

conda install numpy scipy scikit-learn numexpr

或所有 Anaconda:

conda install anaconda

解决 MKL 共享库“权限被拒绝”错误

在启用了 SELinux 的 Linux 平台上,您可能会遇到如下安全错误:

error while loading shared libraries: <libmkl_intel.so>: cannot restore segment prot after reloc: Permission denied

这是因为 MKL 需要文本重定位权限,而 SELinux 默认拒绝。这可以防止 Numpy 加载 MKL,从而防止 Numpy 被导入。

这个问题有两种已知的解决方案:

  1. 不需要root权限。通过发出以下命令将 MKL 替换为 OpenBLAS:

    conda install nomkl numpy scipy scikit-learn numexpr
    

    您可以随时使用以下方法恢复到 MKL 默认版本:

    conda remove nomkl
    conda install mkl
    
  2. 需要root权限。暂时禁用 SELinux 强制。从具有 root 权限的终端输入:

    /usr/sbin/setenforce 0
    

    注意:如果您希望永久更改此更改,请在文件中将/etc/selinux/config“强制”更改为“已禁用”,然后重新启动。

许可协议

MKL 优化包含在免费的 Anaconda python 发行版中,并根据../anaconda/eula的条款提供。

以前版本的 MKL 优化不能在 Anaconda 中免费获得,而是根据MKL 优化最终用户许可协议的条款单独提供。