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