[Numpy-discussion] numarray interface and performance issues (for dot product and transpose)

R.M.Everson R.M.Everson at exeter.ac.uk
Fri Mar 1 01:42:05 EST 2002


Hi,

On 28 Feb 2002, Travis Oliphant wrote:
   > On 28 Feb 2002, A.Schmolck wrote:
  >> Two essential matrix operations (matrix-multiplication and
  >> transposition (which is what I am mainly using) are both
  >> considerably
  >>
  >> a) less efficient and
  >> b) less notationally elegant

   > You are not alone in your concerns.  The developers of SciPy are
   > quite concerned about speed, hence the required linking to ATLAS.

   > The question of notational elegance is stickier because we just
   > can't add new operators.

   > The solution I see is to use other classes.
At the moment, I agree this is probably the best solution, although it
would be nice if the core python was able to add operators :)

  >> The following Matlab fragment
  >> M * (C' * C) * V' * u
  >>

   > This becomes (using SciPy which defines Mat = Matrix.Matrix and
   > could later redefine it to use the ATLAS libraries for matrix
   > multiplication).

   > C, V, u, M = apply(Mat, (C, V, u, M))

   > M * (C.H * C) * V.H * M

Yes, much better.
   > not bad..  and with a Mat class that uses the ATLAS blas (not a
   > very hard thing to do now.), this could be made as fast as
   > MATLAB.

   > Perhaps, as as start we could look at how you make the current
   > Numeric use blas if it is installed to do dot on real and complex
   > arrays (I know you can get rid of lapack_lite and use your own
   > lapack) but, the dot function is defined in multiarray and would
   > have to be modified to use the BLAS instead of its own homegrown
   > algorithm.

This is precisely what Alex and I have done.   Please see the patch to
Numeric and timings on http://www.dcs.ex.ac.uk/~aschmolc/Numeric/
It's not beautiful but about 40 times faster on 1000 by 1000 matrix
multiplies.  I'll attempt to provide a similar patch for numarray over
the next week or so.

Many thanks for your comments.

Richard.





More information about the NumPy-Discussion mailing list