WSL2 下 Numpy 的性能问题

WSL2 下 Numpy 的性能问题

我在 Windows 11 上设置了 WSL2(使用默认的 Ubuntu 发行版),并通过 apt 安装了 Numpy,以及sudo apt install python3-numpy(和许多其他依赖项)。在 WSL2 下测试 Numpy 的性能时,它的速度慢了约 50 倍。这只是一个使用点积的简单测试(下面的代码,改编自马库斯·贝克尔曼),但根据我在网上看到的内容,这种情况根本不应该发生。随着矩阵越来越大,迭代次数越来越多,情况会变得越来越糟。

我在网上没有发现任何人抱怨此类性能问题;有些人甚至说 WSL2 运行速度比 Windows 更快(!)。我的 WSL2 安装可能存在什么问题?

np.random.seed(0)

size = 1000
A, B = np.random.random((size, size)), np.random.random((size, size))

# Matrix multiplication
N = 5
t = time()
for i in range(N):
    np.dot(A, B)
delta = time() - t
print('Dotted two %dx%d matrices in %0.5f s.' % (size, size, delta / N))
del A, B

原生 Windows:~0.01 秒

WSL2:~0.57 秒

答案1

我发现了问题:我没有安装英特尔的 MKL 库来加速低级线性代数运算(BLAS 和 LAPACK)。它们在 Anaconda 安装中已预先配置,我在 Windows 上使用的是 Anaconda。要解决这个问题,要么安装 Anaconda在 WSL2 上(这样它就成为你的默认 Python 环境)或者使用以下命令安装 Intel MKL 的库(并在安装过程中询问时让它们替换 BLAS 和 LAPACK 库):

sudo apt install libmkl-dev

WSL2 中 Numpy 的性能下降现在约为 10%(在某些情况下甚至更少),这对我来说是可以接受的。

相关内容