- Basic Linear Algebra Subprograms
Basic Linear Algebra Subprograms (BLAS) is a de facto
application programming interface standard for publishing libraries to perform basiclinear algebra operations such as vector andmatrix multiplication . They were first published in1979 , and are used to build larger packages such asLAPACK . Heavily used inhigh-performance computing , highly optimized implementations of the BLAS interface have been developed by hardware vendors such as byIntel as well as by other authors (e.g. ATLAS is a portable self-optimizing BLAS). TheLINPACK 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
:oldsymbol{y} leftarrow alpha oldsymbol{x} + oldsymbol{y} !
as well as scalar
dot product s and vector norms, among other things.Level 2
This level contains "matrix-vector operations" of the form
:oldsymbol{y} leftarrow alpha A oldsymbol{x} + eta oldsymbol{y} !
as well as solving T oldsymbol{x} = oldsymbol{y} for x with T being triangular, among other things.
Level 3
This level contains "matrix-matrix operations" of the form
:C leftarrow alpha A B + eta C !
as well as solving B leftarrow alpha T^{-1} B for triangular matrices T, 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. [http://www.netlib.org/blas/] ;Accelerate:Apple Computer 's framework forMac OS X , which includes tuned versions of BLAS and LAPACK for bothPowerPC and Intel Core processors. [http://developer.apple.com/releasenotes/Performance/RN-vecLib/] ;ACML: TheAMD Core Math Library, supporting the AMDAthlon andOpteron CPUs underLinux and Windows. [http://developer.amd.com/acml.aspx] ;ATLAS:Automatically Tuned Linear Algebra Software , anopen source implementation of BLAS APIs for C and Fortran 77. [http://math-atlas.sourceforge.net/] ;CUDA SDK: The NVIDIACUDA SDK includes BLAS functionality for writing C programs that runs onGeForce 8 Series graphics cards.;ESSL:IBM 's Engineering and Scientific Subroutine Library, supporting thePowerPC architecture under AIX andLinux . [http://publib.boulder.ibm.com/infocenter/clresctr/index.jsp?topic=/com.ibm.cluster.essl.doc/esslbooks.html] ;Goto BLAS:Kazushige Goto 's implementation of BLAS. [http://www.tacc.utexas.edu/resources/software/#blas] ;HP MLIB: HP's Math library, supportingIA-64 ,PA-RISC ,x86 andOpteron architecture underHPUX andLinux .;Intel MKL: TheIntel Math Kernel Library, supporting the IntelPentium andItanium CPUs underLinux , Windows andMac OS X . [http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl/] ;MathKeisan: NEC's math library, supportingNEC SX architecture underSUPER-UX , andItanium underLinux . [http://www.mathkeisan.com/] ;PDLIB/SX: NEC's Public Domain Mathematical Library for the NEC SX-4 system. [http://www.nec.co.jp/hpc/mediator/sxm_e/software/61.html] ;SCSL:SGI 's Scientific Computing Software Library contains BLAS and LAPACK implementations for SGI'sIrix workstations. [http://www.sgi.com/products/software/scsl.html] ;Sun Performance Linaray: Optimized BLAS and LAPACK forSPARC andAMD64 architectures under Solaris 8, 9, and 10. [http://developers.sun.com/prodtech/cc/perflib_index.html] ;uBLAS: A genericC++ template class library providing BLAS functionality. Part of theBoost library . Note that, unlike other implementations, uBLAS focuses on correctness of the algorithms using advanced C++ features, rather than high performance. [http://www.boost.org/doc/libs/1_35_0/libs/numeric/ublas/doc/index.htm] ;GSL: TheGNU Scientific Library Contains a multi-platform implementation in C which is distributed under theGNU General Public License .The Sparse BLAS
Sparse extensions to the previously dense BLAS exist such as in ACML
ee also
*
Numerical linear algebra , the type of problem BLAS solves
*LAPACK , the Linear Algebra PackageExternal links
* [http://www.netlib.org/blas/ BLAS homepage] on Netlib.org
* [http://www.netlib.org/blas/faq.html BLAS FAQ]
* [http://www.gnu.org/software/gsl/manual/html_node/BLAS-Support.html BLAS operations] from the GNU Scientific Library reference manual
* [http://www.netlib.org/lapack/lug/node145.html BLAS Quick Reference Guide] from LAPACK Users' Guide
* [http://history.siam.org/oralhistories/lawson.htm Lawson Oral History] One of the original authors of the BLAS discusses its creation in an oral history interview. Charles L. Lawson Oral history interview by Thomas Haigh, 6 and 7 November, 2004, San Clemente, California. Society for Industrial and Applied Mathematics, Philadelphia, PA.
* [http://history.siam.org/oralhistories/dongarra.htm Dongarra Oral History] In an oral history interview, Jack Dongarra explores the early relationship of BLAS to LINPACK, the creation of higher level BLAS versions for new architectures, and his later work on the ATLAS system to automatically optimize BLAS for particular machines. Jack Dongarra, Oral history interview by Thomas Haigh, 26 April, 2005, University of Tennessee, Knoxville TN. Society for Industrial and Applied Mathematics, Philadelphia, PA* An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum doi-inline|10.1145/567806.567810
Wikimedia Foundation. 2010.