[Numpy-discussion] BLAS and innerproduct
R.M.Everson at exeter.ac.uk
Tue Nov 13 13:53:01 CST 2001
So far as I can tell Numeric.dot(), which uses innerproduct() from
multiarraymodule.c doesn't call the BLAS, even if Numeric was compiled
against native BLAS. This means (at least on my machine) that
X = ones((150, 16384), 'd')
C = dot(X, tranpose(X))
is about 15 times as slow as the comparable operations in Matlab (v6),
which does, I think, use the native BLAS.
I guess that multiarray.c is not particularly optimised to use the
BLAS because of the difficulties of coping with all sorts of types
(float32, int64 etc), and with non-contiguous arrays. The
innerproduct is so basic to most of the work I use Numeric for that a
speed up here would make a big difference. I'm thinking of patching
multiarray.c to use the BLAS when it can, but before I start are there
good reasons for doing something different?
Any advice gratefully received!
Department of Computer Science, Exeter University Voice: +44 1392 264065
R.M.Everson at exeter.ac.uk Secretary: +44 1392 264061
http://www.dcs.ex.ac.uk/people/reverson Fax: +44 1392 264067
More information about the Numpy-discussion