【发布时间】: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)
【问题讨论】:
-
我会推荐两种环境。一个带有 numpy 链接到 MKL,一个没有。当然,您也可以制作多个环境,以与其他 BLAS 库进行比较。
-
不确定这是否可以在 Windows 上完成。另见例如stackoverflow.com/q/45722188, stackoverflow.com/q/34830050, stackoverflow.com/a/46656407