[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