LAPACK Frequently Asked Questions (FAQ)

lapack@cs.utk.edu

Many thanks to the netlib_maintainers@netlib.org from whose FAQ list I have patterned this list for LAPACK.

Table of Contents

LAPACK
1.1) What is LAPACK?
1.2) Are there legal restrictions on the use of LAPACK software?
1.3) What revisions have been made since the last release?
1.4) When is the next scheduled release of LAPACK?
1.5) Where can I find out more information about LAPACK?
1.6) Where can I find Java LAPACK?
1.7) How do I obtain a copy of the LAPACK Users' Guide?
1.8) Why aren't BLAS routines included when I download an LAPACK routine?
1.9) Are prebuilt LAPACK libraries available?
1.10) How do I find a particular routine?
1.11) Why aren't auxiliary routines listed on the index?
1.12) I can't get a program to work. What should I do?
1.13) How can I unpack lapack.tar.gz?
1.14) Where do I find details of the LAPACK Test Suite and Timing Suite?
1.15) What technical support for LAPACK is available?

BLAS
2.1) What and where are the BLAS?
2.2) Publications/references for the BLAS?
2.3) Is there a Quick Reference Guide to the BLAS available?
2.4) Are optimized BLAS libraries available?
2.5) Where can I find the Intel BLAS for Windows NT?
2.6) Where can I find the Intel BLAS for Linux?
2.7) Are prebuilt BLAS libraries available?

1) LAPACK

1.1) What is LAPACK?

LAPACK provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.

Release 2.0 of LAPACK introduces new routines, as well as extending the functionality of existing routines. For detailed information on the revisions, please refer to revisions.info.

The original goal of the LAPACK project was to make the widely used EISPACK and LINPACK libraries run efficiently on shared-memory vector and parallel processors. On these machines, LINPACK and EISPACK are inefficient because their memory access patterns disregard the multi-layered memory hierarchies of the machines, thereby spending too much time moving data instead of doing useful floating-point operations. LAPACK addresses this problem by reorganizing the algorithms to use block matrix operations, such as matrix multiplication, in the innermost loops. These block operations can be optimized for each architecture to account for the memory hierarchy, and so provide a transportable way to achieve high efficiency on diverse modern machines. We use the term "transportable" instead of "portable" because, for fastest possible performance, LAPACK requires that highly optimized block matrix operations be already implemented on each machine.

LAPACK routines are written so that as much as possible of the computation is performed by calls to the Basic Linear Algebra Subprograms (BLAS). While LINPACK and EISPACK are based on the vector operation kernels of the Level 1 BLAS, LAPACK was designed at the outset to exploit the Level 3 BLAS -- a set of specifications for Fortran subprograms that do various types of matrix multiplication and the solution of triangular systems with multiple right-hand sides. Because of the coarse granularity of the Level 3 BLAS operations, their use promotes high efficiency on many high-performance computers, particularly if specially coded implementations are provided by the manufacturer.

Highly efficient machine-specific implementations of the BLAS are available for many modern high-performance computers. The BLAS enable LAPACK routines to achieve high performance with transportable software. Although a model Fortran implementation of the BLAS in available from netlib in the BLAS library, it is not expected to perform as well as a specially tuned implementation on most high-performance computers -- on some machines it may give much worse performance -- but it allows users to run LAPACK software on machines that do not offer any other implementation of the BLAS.

1.2) Are there legal restrictions on the use of LAPACK software?

LAPACK 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.

1.3) What revisions have been made since the last release?

For detailed information on the revisions since the previous public release, please refer to revisions.info.

1.4) When is the next scheduled release of LAPACK?

LAPACK, version 3.0 is slated for release in the late Fall/early Winter, 1998. The most significant new routines are:

  1. the singular value decomposition computed by the divide-and-conquer method
  2. new simple and expert drivers for the generalized nonsymmetric eigenproblem (xGGES,xGGEV,xGGESX,xGGEVX)
  3. simple driver for the generalized symmetric eigenproblem (xSYGV/xHEGV)
  4. a faster QR decomposition with column pivoting (xGEQP3)
  5. a faster solver for the rank-deficient least squares (xGELSY)
  6. a blocked version of xTZRQF (xTZRZF), and associated xORMRZ/xUNMRZ
  7. improved linear system expert drivers

The LAPACK Users' Guide, Third Edition is also in preparation.

1.5) Where can I find more information about LAPACK?

A variety of working notes related to the development of the LAPACK library were published as LAPACK Working Notes and are available at:

http://www.netlib.org/lapack/lawns/

1.6) Where can I find Java LAPACK?

The first public release of the Java LAPACK (version 0.3 beta) is available for download at the following URL:

http://www.cs.utk.edu/f2j/download.html

1.7) How do I obtain a copy of the LAPACK Users' Guide?

An html version of the LAPACK Users' Guide is available for viewing on netlib.

The printed version of the LAPACK Users' Guide, Second Edition is available from SIAM (Society for Industrial and Applied Mathematics). The list price is $28.50 and the SIAM Member Price is $22.80. Contact SIAM for additional information.

The royalties from the sales of this book are being placed in a fund to help students attend SIAM meetings and other SIAM related activities. This fund is administered by SIAM and qualified individuals are encouraged to write directly to SIAM for guidelines.

1.8) Why aren't BLAS routines included when I download an LAPACK routine?

It is assumed that you have a machine-specific optimized BLAS library already available on the architecture to which you are installing LAPACK. If this is not the case, you can download a Fortran77 reference implementation of the BLAS from netlib.

Although a model implementation of the BLAS in available from netlib in the blas directory, it is not expected to perform as well as a specially tuned implementation on most high-performance computers -- on some machines it may give much worse performance -- but it allows users to run LAPACK software on machines that do not offer any other implementation of the BLAS.

1.9) Are prebuilt LAPACK libraries available?

Yes, prebuilt LAPACK libraries are available for a variety of architectures. Refer to

http://www.netlib.org/lapack/index.html
for a complete list of available prebuilt libraries.

1.10) How do I find a particular routine?

Indexes of individual LAPACK driver and computational routines are available. These indexes contain brief descriptions of each routine.

LAPACK routines are available in four types: single precision real, double precision real, single precision complex, and double precision complex.

NOTE: For brevity, LAPACK auxiliary routines are not listed on these indexes of routines.

1.11) Why aren't auxiliary routines listed on the index?

For brevity, LAPACK auxiliary routines are not listed on the indexes of routines.

However, the routines are contained in the respective directories on netlib. If you download a routine with dependencies, these auxiliary routines should be included with your request. Or, if for some reason you wish to obtain an individual auxiliary routine, and you already know the name of the routine, you can request that routine. For example, if I would like to obtain dlacpy.f, I would connect to the URL:

   http://www.netlib.org/lapack/double/dlacpy.f

1.12) I can't get a program to work. What should I do?

Technical questions should be directed to the authors at

lapack@cs.utk.edu.

Please tell us the type of machine on which the tests were run, the compiler and compiler options that were used, details of the BLAS library that was used, and a copy of the input file if appropriate.

Be prepared to answer the following questions:

  1. Have you run the BLAS and LAPACK test suites?
  2. Have you checked the errata list on netlib?
  3. If you are using an optimized BLAS library, have you tried using the reference implementation from netlib?

1.13) How can I unpack lapack.tar.gz?

   gunzip lapack.tar.gz
   tar xvf lapack.tar

The compression program gzip (and gunzip) is Gnu software. If it is not already available on your machine, you can download it via anonymous ftp:

   ncftp prep.ai.mit.edu
   cd pub/gnu/
   get gzip-1.2.4.tar

1.14) Where do I find details of the LAPACK Test Suite and Timing Suite?

Full details of the LAPACK Test Suite and Timing Suite can be found in LAPACK Working Note 41: "Installation Guide to LAPACK" available via the URL:

1.15) What technical support for LAPACK is available?

Technical questions and comments should be directed to the authors at

lapack@cs.utk.edu.

See Question 1.12

2) BLAS

2.1) What and where are the BLAS?

The BLAS (Basic Linear Algebra Subprograms) are high quality "building block" routines for performing basic vector and matrix operations. Level 1 BLAS do vector-vector operations, Level 2 BLAS do matrix-vector operations, and Level 3 BLAS do matrix-matrix operations. Because the BLAS are efficient, portable, and widely available, they're commonly used in the development of high quality linear algebra software, LINPACK and LAPACK for example.

A Fortran77 reference implementation of the BLAS is located in the blas directory of Netlib.

2.2) 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.

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

Yes, there is a postscript version of the Quick Reference Guide to the BLAS available.

2.4) Are optimized BLAS libraries available?

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). For further details, please contact your local vendor representative.

Optimized BLAS libraries are NOT provided on netlib.

However, if a machine-specific optimized BLAS library is not available on the architecture to which you are installing LAPACK, you can download a Fortran77 reference implementation of the BLAS from netlib.

2.5) Where can I find the Intel BLAS for Windows NT?

The Intel BLAS for Windows NT can be found in Intel's Math Kernel Library. Refer to the following URL: Intel's Math Kernel Library.

2.6) Where can I find the Intel BLAS for Linux?

Yes, the Intel BLAS for Linux are now available! Refer to the following URL:

Intel BLAS for Linux.

2.7) Are prebuilt BLAS libraries available?

No. It is assumed that you have a machine-specific optimized BLAS library already available on the architecture to which you are installing LAPACK. If this is not the case, you can download a Fortran77 reference implementation of the BLAS from netlib.

Although a model implementation of the BLAS in available from netlib in the blas directory, it is not expected to perform as well as a specially tuned implementation on most high-performance computers -- on some machines it may give much worse performance -- but it allows users to run LAPACK software on machines that do not offer any other implementation of the BLAS.

lapack@cs.utk.edu