# openSUSE:Science Linear algebra libraries

### BLAS and LAPAK

BLAS (Basic Linear Algebra Subprograms) are a set of low-level kernel subroutines that perform common linear algebra operations such as copying, vector scaling, vector dot products, linear combinations, and matrix multiplication.

LAPACK (Linear Algebra Package) is a software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It also includes routines to implement the associated matrix factorizations such as LU, QR, Cholesky and Schur decomposition.

#### Implementations of BLAS

- BLAS - reference implementation
- ATLAS - Automatically Tuned Linear Algebra Software
- OpenBLAS - optimized BLAS library based on GotoBLAS2

#### Implementations of LAPACK

- LAPACK - reference implementation
- ATLAS - provides an optimized subset of LAPACK
- OpenBLAS - provides LAPACK with some optimizations

#### openSUSE specific configurations

##### OpenBLAS

OpenBLAS packages support multiple architectures. All specific optimizations are included in the library and dynamically switched at run time.

There are three variants of library:

- Serial library (libopenblas_serial0)
- With OpenMP support (libopenblas_openmp0 or libopenblaso0)
- With threading support (libopenblas_pthreads0 or libopenblasp0)

#### Switching between implementation

openSUSE uses reference BLAS and LAPACK implementations by default, but ATLAS or OpenBLAS are usually much faster. You can switch it by update-alternatives mechanism:

##### BLAS

/usr/sbin/update-alternatives --config libblas.so.3

Example:

There are 4 choices for the alternative libblas.so.3 (providing /usr/lib64/libblas.so.3). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib64/libblas.so.3.4.2 50 auto mode 1 /usr/lib64/atlas/libsatlas.so.3 20 manual mode 2 /usr/lib64/atlas/libtatlas.so.3 20 manual mode 3 /usr/lib64/libblas.so.3.4.2 50 manual mode 4 /usr/lib64/libopenblas.so.0 20 manual mode

##### LAPAK

/usr/sbin/update-alternatives --config liblapack.so.3

Example:

There are 3 choices for the alternative liblapack.so.3 (providing /usr/lib64/liblapack.so.3). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib64/liblapack.so.3.4.2 50 auto mode 1 /usr/lib64/atlas/libsatlas.so.3 20 manual mode 2 /usr/lib64/atlas/libtatlas.so.3 20 manual mode 3 /usr/lib64/liblapack.so.3.4.2 50 manual mode