为什么enthought mkl例程比matlab慢

时间:2012-09-08 16:45:59

标签: python matlab numpy scipy

我正在测试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的版本是10.2.6。

1 个答案:

答案 0 :(得分:8)

Numpy的la.svd(M)正在计算U,S和V,而Matlab的svd(M)仅计算S.请尝试与la.svd(M, compute_uv=False)[U,S,V]=svd(M)进行比较。