[SciPy-user] scipy 0.7.0.dev4373 + atlas FAILED (failures=2, errors=12)

David Cournapeau david at ar.media.kyoto-u.ac.jp
Sat May 17 04:23:46 EDT 2008


Xavier Gnata wrote:
>> Not sure about this one. Probably a real bug.

This error is often seen when mixing g77/gfortran. hardy still uses g77 
as the default fortran compiler, so it is easy to make a mistake there.

> Thanks for our support :)
> I used to use the atlas unbutu package but I would like to understand 
> how to compile ATLAS and to see if there is a real performance 
> improvement or not. As you said,it should note be that large...

It is large if you are using a recent core 2 duo: the atlas package 
(sse2) are built for pentium4 which has a deficient L1 cache, whereas 
core 2 duo has much better behaviour. For large matrices, this can be 
significant.

How did you build lapack ? From lapack 3.1.1, you only need to use this 
as the make.inc:

####################################################################
#  LAPACK make include file.                                       #
#  LAPACK, Version 3.1.1                                           #
#  February 2007                                                   #
####################################################################
#
SHELL = /bin/sh
#
#  The machine (platform) identifier to append to the library names
#
PLAT = _LINUX
#
#  Modify the FORTRAN and OPTS definitions to refer to the
#  compiler and desired compiler options for your machine.  NOOPT
#  refers to the compiler options desired when NO OPTIMIZATION is
#  selected.  Define LOADER and LOADOPTS to refer to the loader and
#  desired load options for your machine.
#
FORTRAN  = gfortran
OPTS     = -O2 -fPIC
DRVOPTS  = $(OPTS)
NOOPT    = -O0 -fPIC
LOADER   = gfortran
LOADOPTS =
#
# Timer for the SECOND and DSECND routines
#
# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
#TIMER    = EXT_ETIME
# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION 
ETIME_
# TIMER    = EXT_ETIME_
# For gfortran compiler: SECOND and DSECND will use a call to the 
INTERNAL FUNCTION ETIME
TIMER    = INT_ETIME
# If your Fortran compiler does not provide etime (like Nag Fortran 
Compiler, etc...)
# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
# TIMER    = INT_CPU_TIME
# If neither of this works...you can use the NONE value... In that case, 
SECOND and DSECND will always return 0
# TIMER     = NONE
#
#  The archiver and the flag(s) to use when building archive (library)
#  If you system has no ranlib, set RANLIB = echo.
#
ARCH     = ar
ARCHFLAGS= cr
RANLIB   = ranlib

LAPACKLIB = liblapack_pic.

And then, to build atlas:

./configure -C if gfortran -Fa alg -fPIC 
--with-netlib-lapack=PATH_TO_LAPACK/liblapack_pic.a

But really, you have to think about the pain to build and make sure it 
works with the time you gain by having a faster atlas. I bet that for 
the time you need to make it work, you could have inverted millions of 
big matrices :)

cheers,

David



More information about the SciPy-User mailing list