[SciPy-user] Re: BLAS optimized matrix multiplication

Pearu Peterson pearu at scipy.org
Tue Jun 1 13:57:21 CDT 2004



On Tue, 1 Jun 2004, Kirill Lapshin wrote:

> Pearu Peterson wrote:
> > 
> > Scipy 0.3 win32 installer should use ATLAS 3.6.0 that is optimized for 
> > PIII. Note that scipy.dot refers to Numeric/dotblas.dot function:
> > 
> > In [1]: import scipy
> > 
> > In [2]: scipy.dot.__module__
> > Out[2]: 'dotblas'
> > 
> > (at least on my debian box).
> 
> Well not on my Windows box. It says 'Numeric' here. I am using binary 
> install from scipy.org, the one which claims that it comes with ATLAS 
> 3.6.0. I guess the problem is that Numeric binary package distributed by 
> Numeric guys does not have dotblas compiled. That's what I was trying to 
> say -- Numeric comes without ATLAS so they did not include dotblas, but 
> you do distribute ATLAS on windows, so it would be natural for you to 
> add dotblas in SciPy. I know that I can recompile Numeric and SciPy, but 
> it would be nice if default install would do the right thing.

I agree. We need then dotblas implementation that uses linalg, testing 
site as well as some benchmarks. Any takers?

> BTW, since you are using Debian, is there Debian package for SciPy? 
> Looks like there is no official one yet, but maybe someone maintains 
> unofficial? Any plans on official package?

Yes, Jose Fonseca has packaged Scipy for debian. See

  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=126037

Basically, a debian sponsor is needed for getting Scipy to official 
Debian but no one has responed since March according to the above debian 
bug issue.

> > Scipy has linalg that contains wrappers to blas/lapack libraries and use 
> > ATLAS when available. See 
> > 
> >   dir(scipy.linalg.cblas)
> >   dir(scipy.linalg.fblas)
> >   dir(scipy.linalg.clapack)
> >   dir(scipy.linalg.flapack)
> 
> Cool, thanks. x = scipy.linalg.fblas.dgemm(1,a,b) is much much faster 
> than x = dot(a,b).
> 
> BTW, why cblas module is almost empty and fblas has all the wrappers? Is 
> it safe to assume that fblas has the same set of routines on all 
> platforms, or is it configuration specific?

Ideally, one should use blas/lapack functions returned by

  scipy.linalg.blas.get_blas_funcs
  scipy.linalg.lapack.get_lapack_funcs

These hooks take into account the type and data-ordering of input 
arrays and return optimal routine for a particular task, see linalg 
functions for example usages. For example,

In [25]: gemm, = 
scipy.linalg.blas.get_blas_funcs(['gemm'],(array([1,2],'f'),))

In [26]: gemm.typecode
Out[26]: 'f'

In [27]: gemm, = 
scipy.linalg.blas.get_blas_funcs(['gemm'],(array([1,2],'d'),))

In [28]: gemm.typecode

cblas and fblas differ for several reasons (for 1-d arrays it 
doesn't matter whether you use cblas or fblas, cblas requires additional 
wrappers, etc) and at the moment it is not safe to assume that they will 
contain the same set of functions.

> > Yes, I think we should release 0.3.1 before summer.
> 
> It is summer already :)
> Oh, wait, did you mean summer 2005? Just kidding.

Well, in Estonia we still have spring;-) Summer starts in June 23.

Pearu



More information about the SciPy-user mailing list