[SciPy-user] SciPy ATLAS vs. Matlab 7.2 linear algebra benchmarks
Bart Vandereycken
bart.vandereycken@cs.kuleuven...
Thu Aug 30 09:54:53 CDT 2007
Jose Unpingco wrote:
> For this experiment, I create a square matrix with random entries of
> size 500, 1000, 1500, 2000 and then apply a variety of factorizations to
> those matrices. Naturally, each of these experiments is run on exactly
> the same workstation. The times are wall times in seconds.
>
> The bottom line is that Matlab is still substantially faster than either
> of the ATLAS library versions. However, the newer developer version
> (3.7.37) of the ATLAS library is about one third faster than the
> previous version (3.6). Note that Enthought SciPy distribution includes
> ATLAS 3.6.
I think you compared the wrong timings. If I compare the svd of scipy
(atlas 3.6) and matlab 7.2 on my machine I get:
n 500 1000 1500
scipy 0.4 3.9 13
matlab 0.4 3.9 13
There is no difference between scipy and matlab.
Matlab script:
tic; s = svd(A); toc
Scipy script:
import numpy as NY
import scipy.linalg as LA
import time
t = time.time()
T = LA.svd(A,compute_uv=0)
t = time.time() - t
print t
As you can see the compute_uv=0 is important. The matlab command "s =
svd(A)" only computes the singular values.
If you want the full output with singular vectors, I get this
n 500 1000 1500
scipy 1.3 10 31
matlab 3.0 32 107
Now scipy is significantly faster! This is probably because matlab's
output for S is a full matrix and the V is not transposed. Scipy just
gives you the raw output of lapack svd routines, which is good enough.
Matlab script:
tic; [U,S,V] = svd(A); toc
Scipy script:
import numpy as NY
import scipy.linalg as LA
import time
t = time.time()
T = LA.svd(A)
t = time.time() - t
print t
I suspect the same has happened to the lu and qr routines. It would help
if you include the benchmark code.
BTW I didn't know atlas 3.7 was that much faster :)
-- bart
More information about the SciPy-user
mailing list