LAPACK

from Wikipedia, the free encyclopedia
LAPACK

logo
Basic data

Current  version 3.9.0
(November 21, 2019)
operating system platform independent
programming language Fortran 90
category Program library for: linear algebra
License BSD
www.netlib.org/lapack

LAPACK ( L inear A lgebra pack age ) is a program library under the BSD license , the algorithms in the field of numerical linear algebra contains. The library was originally written in FORTRAN 77 , but was converted to Fortran 90 with the release of version 3.2 . The library includes efficient routines for solving systems of linear equations , linear compensation problems and eigenvalue problems . The numerical methods of linear algebra are used for this purpose. a. QR decomposition , household transformation , singular value decomposition .

The routines in LAPACK use the Basic Linear Algebra Subprograms (BLAS) software package as an auxiliary library for elementary operations in linear algebra . In the Lapack95 version, features of Fortran 95 are used to simplify the interface.

LAPACK is a further development of the older LINPACK library , which was specially tailored to the vector computers that were common at the time . In LAPACK, the elementary linear algebra was outsourced and used with a defined interface Basic Linear Algebra Subprograms ( BLAS ). In BLAS z. B. modern cache techniques implemented effectively. Portings from BLAS can be tailored to newer or more specific architectures, the advantages of which can be used immediately in LAPACK. LAPACK has largely replaced the EISPACK package from the 1960s .

LAPACK has been ported for important architectures. Such ports are ScaLapack for MIMD architectures and PLapack for abstract parallel architectures.

LAPACK can be used from several languages ​​despite programming in Fortran:

  • clapack for C was created through automatic porting with f2c .
  • lapacke is a wrapper for C with header files.
  • LAPACK ++ is a wrapper for C ++ .
  • Armadillo is a wrapper for C ++ .
  • JLapack for Java was created with f2j .
  • HBlas is a port to Haskell.
  • LACAML is a port to OCaml.
  • cula is a partial implementation in Cuda (Nvidia).

The reference implementation of LAPACK and BLAS is available at netlib.org. After the download, first BLAS, then LAPACK and, if required, the C wrapper lapacke are generated with make. The C-Wrapper cblas for BLAS must be installed separately.

Optimized implementations are made by computer manufacturers (AMD: ACML, Cray: libsci, IBM: Essl, Intel: MKL) and OS distributors (Fedora, RedHat, Suse, Mandriva, Debian, Cygwin, Ubuntu, Gentoo, Quantian, OpenBSD, FreeBSD, NetBSD , Dragonfly BSD).

See also

Web links

Individual evidence

  1. http://www.netlib.org/lapack95/