Tables 12.1-12.5 present a list of freely available software for the solution of linear algebra problems. The interest is in software for high-performance computers that is available in "open source" form on the web for solving problems in numerical linear algebra, specifically dense, sparse direct and iterative systems and sparse iterative eigenvalue problems.
Additional pointers to software can be found at: www.nhse.org/rib/repositories/nhse/catalog/\hyper@hash{}Numerical_Programs_and_Routines. A survey of Iterative Linear System Solver Packages can be found at: www.netlib.org/utk/papers/iterative-survey.
Notes for Tables 12.1-12.5:
Type: Real for Real arithmetic and Complex for Complex arithmetic
Support: An email address where you can send questions and bug reports.
Language: f77(may also mean Fortran 95), C, C++
Mode: Seq for Sequential, vector and/or SMP/multithreaded versions
Dist for distributed memory message passing (M = MPI, P = PVM)
Dense: Dense, triangular, banded, tridiagonal matrices
Sparse: A sparse matrix representation is used to contain the data.
Direct: A direct approach is used to factor and solve the system.
SPD: The matrix is symmetric and positive definite
Gen: The matrix is general
Iterative: An iterative method is used to solve the system.
P: when used in a column labeled "Sparse Iterative," indicates preconditioners
Sparse eigenvalue: An iterative method is used to find some of the eigenvalues
Sym: The matrix is symmetric (Hermitian in the complex case)
Package |
Support |
Type |
Language |
Mode |
Dense |
Sparse Direct |
Sparse Iterative |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
? | ? |
Real |
Complex |
f77 |
c |
c++ |
Seq |
Dist | ? |
SPD |
Gen |
SPD |
Gen |
ATLAS |
yes |
X |
X |
X |
X | ? |
X | ? |
X | ? | ? | ? | ? |
BLAS |
yes |
X |
X |
X |
X | ? |
X | ? |
X | ? | ? | ? | ? |
FLAME |
yes |
X |
X |
X |
X | ? |
X | ? |
X | ? | ? | ? | ? |
LINALG * |
? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
MTL |
yes |
X | ? | ? | ? |
X |
X | ? |
X | ? | ? | ? | ? |
NETMAT |
yes |
X | ? | ? | ? |
X |
X | ? |
X | ? | ? | ? | ? |
NIST S-BLAS |
yes |
X |
X |
X |
X | ? |
X | ? | ? |
X |
X |
X |
X |
PSBLAS |
yes |
X |
X |
X |
X | ? |
X |
M | ? |
X |
X |
X |
X |
SparseLib++ |
yes |
X |
X | ? |
X |
X |
X | ? | ? |
X |
X |
X |
X |
Package |
Support |
Type |
Language |
Mode |
Dense |
Sparse Iterative |
Sparse Eigenvalue |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
? | ? |
Real |
Complex |
f77 |
c |
c++ |
Seq |
Dist | ? |
SPD |
Gen |
Sym |
Gen |
LAPACK |
yes |
X |
X |
X |
X | ? |
X | ? |
X | ? | ? | ? | ? |
LAPACK95 |
yes |
X |
X |
95 | ? | ? |
X | ? |
X | ? | ? | ? | ? |
NAPACK |
yes |
X | ? |
X | ? | ? |
X | ? |
X |
X | ? |
X | ? |
PLAPACK |
yes |
X |
X |
X |
X | ? | ? |
M |
X | ? | ? | ? | ? |
PRISM |
yes |
X | ? |
X | ? | ? |
X |
M |
X | ? | ? | ? | ? |
ScaLAPACK |
yes |
X |
X |
X |
X | ? | ? |
M/P |
X | ? | ? | ? | ? |
Package |
Support |
Type |
Language |
Mode |
Dense |
Sparse Direct |
Sparse Iterative |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
? | ? |
Real |
Complex |
f77 |
c |
c++ |
Seq |
Dist | ? |
SPD |
Gen |
SPD |
Gen |
HSL |
yes |
X |
X |
X | ? | ? |
X | ? | ? |
X |
X | ? | ? |
MFACT |
yes |
X | ? | ? |
X | ? |
X | ? | ? |
X | ? | ? | ? |
MP_SOLVE |
yes |
X |
X | ? |
X | ? | ? |
M | ? | ? |
X | ? | ? |
MUMPS |
yes |
X |
X |
X |
X | ? |
X |
M | ? |
X |
X | ? | ? |
PSPASES |
yes |
X | ? |
X |
X | ? | ? |
M | ? |
X | ? | ? | ? |
SPARSE |
yes |
X |
X | ? |
X | ? |
X | ? | ? |
X |
X | ? | ? |
SPARSEQR |
yes |
X | ? | ? |
X |
X |
X | ? | ? |
X |
X | ? | ? |
SPOOLES |
yes |
X |
X | ? |
X | ? |
X |
M | ? |
X |
X |
X |
X |
SuperLU |
yes |
X |
X |
X |
X | ? |
X |
M | ? |
X |
X | ? | ? |
TAUCS |
yes |
X |
X | ? |
X | ? |
X | ? | ? |
X |
X |
X |
X |
UMFPACK |
yes |
X |
X |
X | ? | ? |
X | ? | ? |
X |
X | ? | ? |
Y12M |
? |
X | ? |
X | ? | ? |
X | ? | ? |
X |
X | ? | ? |
Package |
Support |
Type |
Language |
Mode |
Sparse Eigenvalue |
|||||
---|---|---|---|---|---|---|---|---|---|---|
Real |
Complex |
f77 |
c |
c++ |
Seq |
Dist |
Sym |
Gen |
||
LZPACK |
yes |
X |
X |
X | ? | ? |
X |
M/P |
X | ? |
LASO |
? |
X | ? |
X | ? | ? |
X | ? |
X | ? |
P_ARPACK |
yes |
X |
X |
X |
X |
X |
X |
M/P |
X |
X |
PLANSO |
yes |
X | ? |
X | ? | ? |
X |
M |
X | ? |
TRLAN |
yes |
X | ? |
X | ? | ? |
X |
M |
X | ? |
Package |
Support |
Type |
Language |
Mode |
Sparse Direct |
Sparse Iterative |
Sparse Eigenvalue |
|||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
? | ? |
Real |
Complex |
f77 |
c |
c++ |
Seq |
Dist |
SPD |
Gen |
SPD |
Gen |
Sym |
Gen |
AZTEC |
yes |
X | ? | ? |
X | ? |
X |
M | ? | ? |
X |
X | ? | ? |
BILUM |
yes |
X | ? |
X | ? | ? |
X | ? | ? | ? |
X |
X | ? | ? |
BlockSolve95 |
? |
X | ? |
X |
X |
X | ? |
M | ? | ? |
X |
X | ? | ? |
BPKIT |
yes |
X | ? |
X |
X |
X | ? | ? | ? | ? |
P |
P | ? | ? |
CERFACS |
yes |
X |
X |
X | ? | ? |
X | ? | ? | ? |
X |
X | ? | ? |
HYPRE |
yes |
X | ? |
X |
X | ? |
X |
M | ? | ? |
P |
P | ? | ? |
IML++ |
? |
X | ? |
X |
X |
X |
X | ? | ? | ? |
X |
X | ? | ? |
ISIS++ |
yes |
X | ? | ? | ? |
X | ? |
M | ? | ? |
X |
X | ? | ? |
ITL |
yes |
X | ? | ? | ? |
X |
X | ? | ? | ? |
X |
X | ? | ? |
ITPACK |
? |
X | ? |
X | ? | ? |
X | ? | ? | ? |
X |
X | ? | ? |
LASPack |
yes |
X | ? | ? |
X | ? |
X | ? | ? | ? |
X |
X | ? | ? |
LSQR |
yes |
X | ? |
X |
X | ? |
X | ? | ? | ? | ? |
X | ? | ? |
pARMS |
yes |
X | ? |
X |
X | ? |
X |
M | ? | ? |
X |
X | ? | ? |
PARPRE |
yes |
X | ? | ? |
X | ? | ? |
M | ? | ? |
P |
P | ? | ? |
PCG |
yes |
X | ? |
X |
X |
X | ? |
P | ? | ? |
X | ? | ? | ? |
PETSc |
yes |
X |
X |
X |
X | ? |
X |
M | ? | ? |
X |
X | ? | ? |
P-SparsLIB |
yes |
X | ? |
X | ? | ? | ? |
M | ? | ? | ? |
X | ? | ? |
PSPASES |
yes |
X | ? |
X |
X | ? |
X |
M |
X | ? | ? | ? | ? | ? |
QMRPACK |
? |
X |
X |
X | ? | ? |
X | ? | ? | ? |
X |
X |
X |
X |
SLAP |
? |
X | ? |
X | ? | ? | ? | ? | ? | ? |
X |
X | ? | ? |
SPAI |
yes |
X | ? | ? |
X | ? |
X |
M | ? | ? |
X |
X | ? | ? |
SPLIB |
? |
X | ? |
X | ? | ? |
X | ? | ? | ? |
X |
X | ? | ? |
SPOOLES |
? |
X |
X | ? |
X | ? |
X |
M |
X |
X |
X |
X | ? | ? |
SYMMLQ |
yes |
X | ? |
X | ? | ? |
X | ? | ? | ? |
X |
X | ? | ? |
Templates |
yes |
X | ? |
X |
X | ? |
X | ? | ? | ? |
X |
X | ? | ? |
Linear systems. The literature on linear system solving, like the research in this topic, is mostly split along the lines of direct versus iterative solvers. An introduction that covers both (as well as eigenvalue methods) is the book by Dongarra et al. [35]. A very practical book about linear system solving by iterative methods is the Templates book [12], which in addition to the mathematical details contains sections on sparse data storage and other practical matters. More in depth and less software oriented is the book by Saad [98].
Eigensystems. Along the lines of the Templates book for linear systems is a similar book for eigenvalues problems [7].