Survey
and description of the most
useful packages/libraries available for Numerical Linear Algebra
Julien Langou
This course will describe widely used numerical linear algebra
libraries. After a classification of the different class of problem, we
will provide demonstration of use of the following libraries:
BLAS,
LAPACK (dense linear algebra, serial or SMP)
ScaLAPACK
(dense linear algebra, distributed)
PETSc
(solving linear system of equations, sparse iterative methods, distributed)
MUMPS
(solving linear system of equations, sparse direct methods, distributed)
See below for
more details.
For each
library, we will see:
functionalities
in the library
calling sequence and
description of the various parameters
data structure
interfacing
with an existing code
demo codes
advanced
topics relative to the library
As side notes, we
will use also mentionned other alternative packages:
Target Audience: This class is
geared toward researchers (mathematicians, physicists, engineers) who,
due to their need of doing medium and large scale computations, would
benefit from an up-to-date knowledge of the existing Numerical Linear
Algebra resources.
1- BLAS/LAPACK -
The BLAS (Basic Linear Algebra Subprograms) are high quality "building
block" routines for performing basic vector and matrix operations. They
sequential or threaded routines 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 are commonly used in the development of high
quality linear algebra software. 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. Optimized vendor versions of the BLAS and LAPACK exist
on most platform.
2- ScaLAPACK -
The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK
routines redesigned for distributed memory MIMD parallel computers. It
is currently written in a Single-Program-Multiple-Data style using
explicit message passing for interprocessor communication. It assumes
matrices are laid out in a two-dimensional block cyclic decomposition.
In particular, during this class, we will explain in details how a user
can set its matrices for ScaLAPACK.
3- PETSc - PETSc
is a relatively large software package that solves PDE's and ODE's in
parallel. Specific usage scenarios will be given that will illustrate
operations on matrices and vectors, available linear solvers and their
numerous variants as well as nonlinear solvers. Important aspects
of PETSc like storage formats and matrix assembly will also be
discussed. An example of use of HYPRE preconditioners through PETSc
will be given. Interface from an already existing user application-code
to PETSc will be given.
4- MUMPS - MUMPS
is a package LU factorization for sparse matrices. Two flavors of the
package will be discussed: sequential and parallel. Each of the
versions has different performance and functionality characteristics.
Also, an important process of sparse LU factorization will be
discussed, namely ordering.