【问题标题】:How to enable and disable Intel MKL in numpy Python?如何在 numpy Python 中启用和禁用 Intel MKL?
【发布时间】:2021-11-16 09:47:54
【问题描述】:

我想测试和比较使用英特尔 MKL 和没有英特尔 MKL 的 Numpy 矩阵乘法和特征分解性能。

我已经使用pip install mkl(Windows 10(64 位),Python 3.8)安装了 MKL。

然后我使用来自 here 的示例进行 matmul 和特征分解。

我现在如何启用和禁用 MKL 以检查使用和不使用 MKL 的 numpy 性能?

参考代码:

import numpy as np
from time import time

def matrix_mul(size, n=100):
    # reference: https://markus-beuckelmann.de/blog/boosting-numpy-blas.html
    np.random.seed(112)
    a, b = np.random.random((size, size)), np.random.random((size, size))
    t = time()
    for _ in range(n):
        np.dot(a, b)
    delta = time() - t
    print('Dotted two matrices of size %dx%d in %0.4f ms.' % (size, size, delta / n * 1000))


def eigen_decomposition(size, n=10):
    np.random.seed(112)
    a = np.random.random((size, size))
    t = time()
    for _ in range(n):
        np.linalg.eig(a)
    delta = time() - t
    print('Eigen decomposition of size %dx%d in %0.4f ms.' % (size, size, delta / n * 1000))

#Obtaining computation times: 

for i in range(20): 
    eigen_decomposition(500)

for i in range(20): 
    matrix_mul(500)

【问题讨论】:

标签: python intel-mkl


【解决方案1】:

您可以使用不同的环境来比较具有和不具有 MKL 的 Numpy。在每个环境中,您都可以使用包安装程序安装所需的包(带 MKL 或不带 MKL 的 numpy)。然后在该环境中,您可以运行您的程序来比较使用和不使用 MKL 的 Numpy 的性能。

NumPy 不依赖于任何其他 Python 包,但它确实依赖于加速的线性代数库 - 通常是 Intel MKL 或 OpenBLAS。

  • pip 安装的 PyPI 上的 NumPy 轮子是使用 OpenBLAS 构建的。

  • 在 conda 默认通道中,NumPy 是针对英特尔 MKL 构建的。 MKL 是一个单独的包,将在用户安装 NumPy 时安装在用户的环境中。

  • 当用户从 conda-forge 安装 NumPy 时,该 BLAS 包会与实际库一起安装。但它也可以是 MKL(来自默认通道),甚至是 BLIS 或参考 BLAS。

请参考this链接了解安装Numpy的详细信息。

您可以创建两个不同的环境来比较使用 MKL 和不使用 MKL 的 NumPy 性能。在第一个环境中安装独立的 NumPy(即没有 MKL 的 NumPy),在第二个环境中安装带有 MKL 的 NumPy。

使用没有 MKL 的 NumPy 创建环境。

conda create -n <env_name_1> python=<version>
conda activate <env_name_1>
pip install numpy

但根据您的操作系统,可能没有可用的分发版 (Windows)。

在 Windows 上,我们一直在链接 MKL。然而,在 Anaconda 2.5 版本中,我们将 MKL 运行​​时分离到它自己的 conda 包中,以便在所有平台上统一执行操作。

一般你可以创建一个新的环境:

conda create -n wheel_based python
activate wheel
pip install numpy-1.13.3-cp36-none-win_amd64.whl  # or whatever the file is named

在其他环境中,使用以下命令安装带有 MKL 的 NumPy

conda create -n <env_name_2> python=<version>
conda activate <env_name_2>
pip install intel-numpy

这些环境中,你可以分别运行你的程序,这样你就可以分别比较 Numpy 没有 MKL 和 With MKL 的性能。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
相关资源
最近更新 更多