Deji Akingunola 9680a0
Notes on the Fedora version of ATLAS
Quentin Spencer cdd562
Quentin Spencer cdd562
by Quentin Spencer
Quentin Spencer 2c4ed2
updated: October 4, 2005
Quentin Spencer cdd562
Deji Akingunola 9680a0
updated by Deji Akingunola
Deji Akingunola 9680a0
October 15, 2008
Quentin Spencer cdd562
Deji Akingunola 8a1f9d
updated by Deji Akingunola
Deji Akingunola 8a1f9d
June 15, 2011
Deji Akingunola 8a1f9d
Quentin Spencer cdd562
Because ATLAS relies on compile-time optimizations to obtain improved
Quentin Spencer cdd562
performance over BLAS and LAPACK, the resulting binaries are closely
Quentin Spencer cdd562
tied to the hardware on which they are compiled, and can likely result
Quentin Spencer cdd562
in very poor performance on other hardware.  For this reason,
Quentin Spencer cdd562
including a package like ATLAS in Fedora requires some compromises.
Quentin Spencer cdd562
Firstly, a binary ATLAS package must perform reasonably well on the
Quentin Spencer cdd562
entire range of hardware on which it could potentially be installed.
Quentin Spencer cdd562
Optimizing ATLAS for the most modern hardware can result in
Quentin Spencer cdd562
significant performance penalties for users using the same package on
Quentin Spencer cdd562
older hardware.  Second, building from the same source package must
Quentin Spencer cdd562
result in identical binaries for any computer of a particular
Quentin Spencer 2c4ed2
architecture.  This is because the binaries installed on a user's
Quentin Spencer 2c4ed2
computer are built on a computer in the Fedora Extras build system,
Quentin Spencer 2c4ed2
which will have hardware different from the end user's hardware, and
Quentin Spencer 2c4ed2
quite possibly different from other available hardware in the build
Quentin Spencer 2c4ed2
system.
Quentin Spencer cdd562
Deji Akingunola 9680a0
As of version 3.8.2 (in Fedora), ATLAS builds uses achitectural defaults,
Deji Akingunola 9680a0
are partial results of past searches when the compiler and architecture
Deji Akingunola 9680a0
are known, to discover the appropriate kernels used to build all the required
Deji Akingunola 9680a0
libraries. They make install time quicker and also ensure that good results are
Deji Akingunola 9680a0
obtained, since they typically represent several searches and/or user
Deji Akingunola 9680a0
intervention into the usual search so that maximum performance is found.
Deji Akingunola 9680a0
The result is a set of libraries that will not
Quentin Spencer cdd562
necessarily achieve optimal performance on any given hardware but
Quentin Spencer cdd562
should still offer significant performance gains over the reference
Quentin Spencer cdd562
BLAS and LAPACK libraries on most hardware.  The binary package
Quentin Spencer cdd562
includes the atlas libraries as well as binary-compatible blas and
Quentin Spencer cdd562
lapack libraries that should work as a drop-in replacement for the
Deji Akingunola 9680a0
standard ones (they are installed in /usr/lib{64}/atlas* rather than
Deji Akingunola 9680a0
/usr/lib{64}).
Deji Akingunola 9680a0
Deji Akingunola 8a1f9d
For 32bit x86 systems, the default atlas package on was built using Pentium Pro
Deji Akingunola 8a1f9d
architectural defaults using just x87 math optimization. In addition to the
Deji Akingunola 8a1f9d
base 32bit build, 4 ATLAS subpackages are built for 3Dnow, SSE, SSE2, and SSE3
Deji Akingunola 8a1f9d
ix86 extensions, using architectural defaults obtained from Athlon K7, PIII,
Deji Akingunola 8a1f9d
Pentium 4 with SSE2 extension and PENTIUM 4 with SSE3 extensions respectively.
Deji Akingunola 3cd5fa
Deji Akingunola 8a1f9d
On 64bit x86 systems the default atlas package on was built with SSE2 optimization using architetural default made for AMD's HAMMER processor, and an additional
Deji Akingunola 8a1f9d
SSE3-enabled subpackage was built also using architetural default made for AMD's HAMMER processor.
Deji Akingunola 8a1f9d
  
Deji Akingunola 3cd5fa
This packaging allows multiple installation of different atlas sub-packages
Deji Akingunola 3cd5fa
at the same time. The alternatives system (read 'man alternatives' for usage)
Deji Akingunola 3cd5fa
is used in the -devel subpackages to select the appropriate location for the 
Deji Akingunola 3cd5fa
architectural dependent header files.
Deji Akingunola 3cd5fa
 
Quentin Spencer cdd562
This package is designed to build RPMs that are identical regardless
Quentin Spencer cdd562
of where they are compiled and that provide reasonable performance on
Quentin Spencer cdd562
a wide range of hardware. For users who want optimal performance on
Quentin Spencer cdd562
particular hardware, custom RPMs can be built from the source package
Deji Akingunola 9680a0
by setting the RPM macro "enable_native_atlas" to a value of 1. This
Quentin Spencer cdd562
can be done from the command line as in the following example:
Quentin Spencer cdd562
Deji Akingunola 3cd5fa
rpmbuild -D "enable_native_atlas 1" --rebuild atlas-3.8.3-1.src.rpm
Quentin Spencer cdd562
Deji Akingunola 9680a0
This will cause the ATLAS build to use the achitectural default most
Deji Akingunola 9680a0
appropriate for the system on which the package is to be built.