3

我正在测试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。

4

1 回答 1

8

Numpyla.svd(M)计算 U、S 和 V,而 Matlabsvd(M)仅计算 S。尝试与la.svd(M, compute_uv=False)or进行比较[U,S,V]=svd(M)

于 2012-09-08T17:30:42.340 回答