12.8 Freely Available Software for Linear Algebra on the Web

12.8 Freely Available Software for Linear Algebra on the Web

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)

Table 12.1: Support routines for numerical linear algebra. LINALG is a collection of software that is available but too varied to describe.

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

Table 12.2: Direct solvers for systems of linear equations.

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

????
Table 12.3: Sparse direct solvers.

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

??
Table 12.4: Sparse eigenvalue solvers.

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

?
Table 12.5: Sparse iterative solvers.

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

??

Reading List

  • 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].




Part III: Managing Clusters