Numerical Linear Algebra Libraries for HPC
If you are compiling your own numerical packages for R, Python, Perl, etc. then you will more than likely need to use the BLAS, LAPACK or ATLAS libraries. The purpose and relationships between these librareis are as follows
BLAS
Basic Linear Algebra Subroutines
BLAS provides basic building blocks for performing basic scalar, vector, and matric operations, e.g. multiplication, addition, subtraction, etc. In particular
Level 1 BLAS perform scalar, vector and vector-vector operations,
Level 2 BLAS perform matrix-vector operations
Level 3 BLAS perform matrix-matrix operations
BLAS are very mature, efficient and portable. They are used in
essentially all high quality numerical code that performs linear algebra
See http://www.netlib.org/blas/ for documentation.
Default BLAS shared object libraries are at:
/usr/lib64/libblas.so.3.2 /usr/lib64/libblas.so.3.2.1 /usr/lib64/libblas.so.3
LAPACK
Linear Algebra PACKage
LAPACK largely replaced fortran libraries originally developed in the 1970s (LINPACK and EISPACK), and takes advantage of level 2 and level 3 BLAS for efficient operation on modern multi-core architectures that incorporate hierarcharical and shared memory.
See http://www.netlib.org/lapack/ for documentation.
Default LAPACKÂ shared object libraries are at:
/usr/lib64/liblapack.so.3.2.1 /usr/lib64/liblapack.so.3.2
ATLAS
Automatically Tuned Linear Algebra Software
The ATLAS libraries consist of the BLAS and a subset of the LAPACK routines.
ATLAS libraries are tuned to particular architectures and compilers in an HPC environment.
Default ATLAS shared object libraries are at:
/usr/lib64/atlas
See http://math-atlas.sourceforge.net/ for documentation.