Atlas aborts the build some kind of CPU frequency scaling is detected on the

build machine because that feature offsets the performance timings. We ignore
that check, however, because with binaries being pre-built on Hydra those
timings aren't accurate for the local machine in the first place. The build log
might show something such as the following:

 | It appears you have cpu throttling enabled, which makes timings
 | unreliable and an ATLAS install nonsensical.  Aborting.
 | See ATLAS/INSTALL.txt for further information
 | Ignoring CPU throttling by user override!

svn path=/nixpkgs/trunk/; revision=32506
This commit is contained in:
Peter Simons 2012-02-23 11:33:26 +00:00
parent 166e87319c
commit e321903ff1
2 changed files with 34 additions and 9 deletions

View File

@ -1,27 +1,46 @@
{ stdenv, fetchurl, gfortran }:
{ stdenv, fetchurl, gfortran, tolerateCpuTimingInaccuracy ? true }:
let
optionalString = stdenv.lib.optionalString;
in
stdenv.mkDerivation {
name = "atlas-3.9.67";
src = fetchurl {
url = mirror://sf/math-atlas/atlas3.9.67.tar.bz2;
sha256 = "06xxlv440z8a3qmfrh17p28girv71c6awvpw5vhpspr0pcsgk1pa";
};
# configure outside of the source directory
# Configure outside of the source directory.
preConfigure = '' mkdir build; cd build; configureScript=../configure; '';
# the manual says you should pass -fPIC as configure arg .. It works
configureFlags = "-Fa alg -fPIC" +
(if stdenv.isi686 then " -b 32" else "");
# * The manual says you should pass -fPIC as configure arg. Not sure why, but
# it works.
#
# * Atlas aborts the build if it detects that some kind of CPU frequency
# scaling is active on the build machine because that feature offsets the
# performance timings. We ignore that check, however, because with binaries
# being pre-built on Hydra those timings aren't accurate for the local
# machine in the first place.
configureFlags = "-Fa alg -fPIC"
+ optionalString stdenv.isi686 " -b 32"
+ optionalString tolerateCpuTimingInaccuracy " -Si cputhrchk 0";
buildInputs = [ gfortran ];
doCheck = true;
meta = {
description = "Atlas library";
homepage = "http://math-atlas.sourceforge.net/";
description = "Automatically Tuned Linear Algebra Software (ATLAS)";
license = "GPL";
homepage = http://math-atlas.sourceforge.net/;
longDescription = ''
The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing
research effort focusing on applying empirical techniques in order to provide
portable performance. At present, it provides C and Fortran77 interfaces to a
portably efficient BLAS implementation, as well as a few routines from LAPACK.
'';
};
}

View File

@ -8296,7 +8296,13 @@ let
### SCIENCE/MATH
atlas = callPackage ../development/libraries/science/math/atlas { };
atlas = callPackage ../development/libraries/science/math/atlas {
# The build process measures CPU capabilities and optimizes the
# library to perform best on that particular machine. That is a
# great feature, but it's of limited use with pre-built binaries
# coming from a central build farm.
tolerateCpuTimingInaccuracy = true;
};
blas = callPackage ../development/libraries/science/math/blas { };