mut*_*isk 3 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);
Run Code Online (Sandbox Code Playgroud)
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.
Numpy la.svd(M)正在计算U,S和V,而Matlab svd(M)只计算S.尝试与la.svd(M, compute_uv=False)或比较[U,S,V]=svd(M).