Basic Linear Algebra Subprograms

This is an old revision of this page, as edited by 85.197.7.49 (talk) at 18:17, 16 May 2006 (External links). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Basic Linear Algebra Subprograms (BLAS) are routines which perform basic linear algebra operations such as vector and matrix multiplication. They are used to build larger packages such as LAPACK. BLAS routines are tuned by high performance computing, supercomputer hardware, and software vendors to run extremely fast under a variety of problem sizes. The LINPACK benchmark relies heavily on DGEMM, a BLAS subroutine, for its performance.

Functionality

The BLAS functionality is divided into three levels: 1, 2 and 3.

Level 1

This level contains vector operations of the form

 

as well as scalar dot products and vector norms, among other things.

Level 2

This level contains matrix-vector operations of the form

 

as well as solving   for x with   being triangular, among other things.

Level 3

This level contains matrix-matrix operations of the form

 

as well as solving   for triangular matrices  , among other things. This level contains the widely used General Matrix Multiply operation.

Implementations

refblas
The official reference implementation from netlib. C and Fortran 77 versions are available.[1]
ACML
The AMD Core Math Library, supporting the AMD Athlon and Opteron CPUs under Linux and Windows.[2]
ATLAS
Automatically Tuned Linear Algebra Software, an open source implementation of BLAS APIs for C and Fortran 77.[3]
ESSL
IBM's Engineering and Scientific Subroutine Library, supporting the PowerPC architecture under AIX and Linux.[4]
Goto BLAS
Kazushige Goto's implementation of BLAS.[5]
HP MLIB
HP's Math library, supporting Itanium, PA-RISC, x86 and Opteron architecture under HPUX and Linux.
IMKL
The Intel Math Kernel Library, supporting the Intel Pentium and Itanium CPUs under Linux and Windows.[6]
uBLAS
A generic C++ template class library providing BLAS functionality. Part of the Boost library.[7]