我正在测试python enthought 分布的线性代数runtines 的速度,它声称与windows 平台上的intel MKL 链接。我在 IPython 交互式 shell 中做了以下操作:
import scipy.linalg as la
import numpy.random
M = random.rand(1000,1000)
%timeit la.svd(M);
svd()
通常需要 1.3 秒。但是,如果我使用 matlab R2011a 并做了M=rand(1000);tic;svd(M);toc
,通常只需要 0.68 秒。
我已经看到了类似的先前问题,将 MKL 和 ATLAS 或其他一些非 MKL 构建的 scipy 与 matlab 使用的 MKL 进行比较。但是我这里的情况应该正是python调用的MKL和matlabR2011a调用的MKL的比较。所以我完全不知道为什么结果如此不同。这对于从 matlab 迁移到 python 来说是如此令人沮丧。
顺便说一句,enthough 使用的 MKL 版本是 10.3.1,而 matlab R2011a 使用的 MKL 版本是 10.2.6。