BLAS Frequently Asked Questions (FAQ)

lapack@cs.utk.edu   |   Sca/LAPACK User Forum

Many thanks to the netlib_maintainers@netlib.org for their help.
This page has been updated 7/25/2005.

Table of Contents

BLAS
1) What and where are the BLAS?
2) Are there legal restrictions on the use of BLAS reference implementation software?
3) Publications/references for the BLAS?
4) Is there a Quick Reference Guide to the BLAS available?
5) Are optimized BLAS libraries available? Where can I find vendor supplied BLAS?
6) Where can I find Java BLAS?
7) Is there a C interface to the BLAS?
8) Are prebuilt reference implementations of the Fortran77 BLAS available?
9) What about shared memory machines? Are there multithreaded versions of the BLAS available?


1) What and where are the BLAS?

The BLAS (Basic Linear Algebra Subprograms) are routines that provide standard building blocks for performing basic vector and matrix operations. The Level 1 BLAS perform scalar, vector and vector-vector operations, the Level 2 BLAS perform matrix-vector operations, and the Level 3 BLAS perform matrix-matrix operations. Because the BLAS are efficient, portable, and widely available, they are commonly used in the development of high quality linear algebra software, LAPACK for example.

The publications given in Section 3 define the specifications for the BLAS, and a Fortran77 reference implementation of the BLAS is located in the blas directory of Netlib, together with testing and timing software. For information on efficient versions of the BLAS, see Section 5.


2) Are there legal restrictions on the use of BLAS reference implementation software?

The reference BLAS is a freely-available software package. It is available from netlib via anonymous ftp and the World Wide Web. Thus, it can be included in commercial software packages (and has been). We only ask that proper credit be given to the authors.

Like all software, it is copyrighted. It is not trademarked, but we do ask the following:

If you modify the source for these routines we ask that you change the name of the routine and comment the changes made to the original.

We will gladly answer any questions regarding the software. If a modification is done, however, it is the responsibility of the person who modified the routine to provide support.


3) Publications/references for the BLAS?

  1. C. L. Lawson, R. J. Hanson, D. Kincaid, and F. T. Krogh, Basic Linear Algebra Subprograms for FORTRAN usage, ACM Trans. Math. Soft., 5 (1979), pp. 308--323.

  2. J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 14 (1988), pp. 1--17.

  3. J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, Algorithm 656: An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 14 (1988), pp. 18--32.

  4. J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 16 (1990), pp. 1--17.

  5. J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, Algorithm 679: A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Soft., 16 (1990), pp. 18--28.

New BLAS
  1. L. S. Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, R. C. Whaley, An Updated Set of Basic Linear Algebra Subprograms (BLAS), ACM Trans. Math. Soft., 28-2 (2002), pp. 135--151.

  2. J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp. 1--111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp. 115--199.

4) Is there a Quick Reference Guide to the BLAS available?

Yes, the Quick Reference Guide to the BLAS is available in postscript and pdf.


5) Are optimized BLAS libraries available? Where can I find optimized BLAS libraries?

YES! Machine-specific optimized BLAS libraries are available for a variety of computer architectures. These optimized BLAS libraries are provided by the computer vendor or by an independent software vendor (ISV) (see list below). For further details, please contact your local vendor representative.

Alternatively, the user can download ATLAS to automatically generate an optimized BLAS library for his architecture. Some prebuilt optimized BLAS libraries are also available from the ATLAS site. Goto BLAS is also available for a given set of machines. Efficient versions of the Level 3 BLAS, based on an efficient matrix matrix multiplication routine, are provided by the GEMM-Based BLAS.

If all else fails, the user can download a Fortran77 reference implementation of the BLAS from netlib. However, keep in mind that this is a reference implementation and is not optimized.

BLAS vendor library List
Last updated: July 20, 2005

Vendor

URL

AMD ACML
Apple Accelerate framework
Compaq CXML
Cray libsci
HP MLIB
IBM ESSL
Intel MKL
NEC PDLIB/SX
SGI SCSL
SUN Sun Performance Library


6) Where can I find Java BLAS?

Yes, Java BLAS are available. Refer to the following URLs: Java LAPACK and JavaNumerics The JavaNumerics webpage provides a focal point for information on numerical computing in Java.


7) Is there a C interface to the BLAS?

Yes, a C interface to the BLAS was defined in the BLAS Technical Forum Standard. The source code is also available.


8) Are prebuilt Fortran77 ref implementation BLAS libraries available?

Yes, you can download a prebuilt Fortran77 reference implementation BLAS library or compile the Fortran77 reference implementation source code of the BLAS from netlib.

Note that this is extremely slow and thus we do not recommend it: you should use optimized BLAS whenever possible, see FAQ 5.


9) What about shared memory machines? Are there multithreaded versions of the BLAS available?

ATLAS, Goto BLAS (two threads only) and most of the BLAS library available via vendors are multithreaded.

lapack@cs.utk.edu   |   ScaLAPACK User Forum