[Numpy-discussion] Matlab/Numeric/numarray benchmarks

Jason Rennie jrennie at csail.mit.edu
Thu Jan 20 10:18:40 EST 2005


On Thu, Jan 20, 2005 at 04:12:56PM +0000, Peter Chang wrote:
> 1) a missing division by count in test01()
> 2) a different default value for count in test11()

My bad.  Should have used Todd Miller's revised version.  

> 3) the Matlab code uses normally distributed random numbers whereas the
> Numeric/numarray code uses uniformlt distributed random numbers.

Good point.

Revised numbers:			+	mmult	eigen

Xeon/3.06GHz/refblas3/lapack3/numarray:	.0224	3.14	2.63
Xeon/3.06GHz/refblas3/lapack3/Numeric:	.0268	3.45	2.73
Xeon/3.06GHz/atlas3-base/numarray:	.0225	3.40	2.52
Xeon/3.06GHz/atlas3-base/Numeric:	.0268	1.04	2.57
Xeon/3.06GHz/atlas3-sse/numarray:	.0224	3.42	2.54
Xeon/3.06GHz/atlas3-sse/Numeric:	.0269	1.05	2.58
Xeon/3.06GHz/atlas3-sse2/numarray:	.0225	3.41	FP Exception
Xeon/3.06GHz/atlas3-sse2/Numeric:	.0269	FP Exc	FP Exception
Celeron/2.8GHz/atlas-base/numarray:	.0814	11.3	6.53
Celeron/2.8GHz/atlas-base/Numeric:	.0918	1.70	6.50
P4/2.8GHz/atlas-base/numarray:		.0262	4.58	2.96
P4/2.8GHz/atlas-base/Numeric:		.0318	1.15	3.00
Xeon/3.06GHz/Matlab:			.0102	.886	2.70
P4/2.8GHz/Matlab:			.0143	1.00	3.07

Very comparable (Numeric vs. numarray) except matrixmultiply, which I
guess is explained by the Debian sarge python2.3-numarray (v1.1.1) not
using the dotblas package/routine, as Todd Miller explained in an
earlier post.  I'll be looking forward to the Debian numarray release
that includes dotblas.  Looks like it will edge-out Numeric across the
board (on the Xeon) once that's in place.  For now, I'll be happy with
Numeric/atlas3-base.

The Matlab numbers use uniform random matrices.

All code attached.

Todd, Peter: sorry for the confusion I propagated.

Jason
-------------- next part --------------
A non-text attachment was scrubbed...
Name: miller-benchmark.py
Type: text/x-python
Size: 2055 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20050120/097d652e/attachment-0001.py>
-------------- next part --------------
a=rand(1000,1000);
b=rand(1000,1000);
N=100;
t0 = cputime;
for i=1:N
  c = a+b;
end
t = cputime-t0;
t = t/N

N=10;
t0 = cputime;
for i=1:N
  c = a*b;
end
t = cputime-t0;
t = t/N

a=rand(500,500);
N=10;
t0 = cputime;
for i=1:N
  c = eig(a);
end
t = cputime-t0;
t = t/N



More information about the NumPy-Discussion mailing list