Freely Available Software for Linear Algebra (August 2015) | ||||||||||||||||||||

Here is a list of freely available software for the solution of linear algebra problems. The interest is in software for high-performance computers that's 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. Please let us know about updates and corrections. | ||||||||||||||||||||

A survey of Iterative Linear System Solver Packages can be found at: | ||||||||||||||||||||

http://www.netlib.org/utk/papers/iterative-survey/ | ||||||||||||||||||||

Thanks, | ||||||||||||||||||||

Jack and | ||||||||||||||||||||

Ahmad | ||||||||||||||||||||

SUPPORT ROUTINES | License | Support | Type | Language | Mode | Dense | Sparse | Last release date | ||||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | |||||||||||||

Armadillo | Mozilla | yes | X | X | X | X | X | 2015-05-24 | ||||||||||||

ATLAS | BSD like | yes | X | X | X | X | X | X | 2014-07-10 | |||||||||||

BLAS | PD | yes | X | X | X | X | X | X | 2013-11-01 | |||||||||||

BLIS | New BSD | yes | X | X | X | X | X | X | 2014-10-23 | |||||||||||

Blitz++ | LGPLv3+ | yes | X | X | X | X | X | 2012-07-04 | ||||||||||||

clMath | Apache | yes | X | X | X | X | X | O | X | 2013-04-02 | ||||||||||

KBLAS | BSD | yes | X | X | X | X | X | C | X | 2015-01-20 | ||||||||||

librsb | LGPLv3 | yes | X | X | X | X | X | X | X | 2015-05-02 | ||||||||||

LINALG * | ? | ? | n/a | |||||||||||||||||

MR3-SMP | New BSD | yes | X | X | X | X | X | X | 2013-06-24 | |||||||||||

MTL | Own | yes | X | X | X | X | 2014-05-22 | |||||||||||||

NEWMAT | Own | yes | X | X | X | X | 2008-11-20 | |||||||||||||

NIST Sparse BLAS | PD | yes | X | X | X | X | X | X | 2009-04-27 | |||||||||||

OpenBLAS | BSD | yes | X | X | X | X | X | X | 2015-03-24 | |||||||||||

PMRRR | New BSD | yes | X | X | X | X | X | X | 2014-02-23 | |||||||||||

pOSKI | BSD | yes | X | X | X | X | X | X | X | 2012-04-27 | ||||||||||

PSBLAS | BSD | yes | X | X | F90 | X | M | X | 2015-04-18 | |||||||||||

Scotch | CeCILL-C | yes | X | X | X | M | X | 2012-12-02 | ||||||||||||

SparseLib++ | PD | yes | X | X | X | X | X | X | 2008-10-30 | |||||||||||

Trilinos/Epetra | BSD | yes | X | X | X | X | X | M | X | 2015-05-07 | ||||||||||

Trilinos/Kokkos | BSD | yes | X | X | X | X | X | 2015-05-07 | ||||||||||||

Trilinos/Teuchos | BSD | yes | X | X | X | X | M | X | 2015-05-07 | |||||||||||

Trilinos/Tpetra | BSD | yes | X | X | X | X | M | X | 2015-05-07 | |||||||||||

uBLAS | Boost | yes | X | X | X | X | X | X | 2015-04-17 | |||||||||||

LINALG *: This is a collection of software that is available but too varied to describe. | ||||||||||||||||||||

DIRECT SOLVERS | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

Chameleon | CeCILL-C | See authors | X | X | X | X | C | M | X | 2014-04-15 | ||||||||||

DPLASMA | BSD | yes | X | X | X | X | C | M | X | 2014-04-14 | ||||||||||

Eigen | Mozilla | yes | X | X | X | X | X | X | X | X | X | 2015-01-21 | ||||||||

Elemental | New BSD | yes | X | X | X | M | X | X | X | X | 2014-11-08 | |||||||||

ELPA | LGPL | yes | X | X | F90 | X | X | M | X | 2015-05-29 | ||||||||||

FLENS | BSD | yes | X | X | X | X | X | 2014-05-11 | ||||||||||||

hmat-oss | GPL | yes | X | X | X | X | X | X | X | X | 2015-03-10 | |||||||||

LAPACK | BSD | yes | X | X | X | X | X | X | 2013-11-26 | |||||||||||

LAPACK95 | BSD | yes | X | X | X | X | X | 2000-11-30 | ||||||||||||

libflame | New BSD | yes | X | X | X | X | X | X | 2014-03-18 | |||||||||||

MAGMA | BSD | yes | X | X | X | X | X | C/O/X | X | X | X | X | 2015-05-05 | |||||||

NAPACK | BSD | yes | X | X | X | X | X | X | ? | |||||||||||

PLAPACK | LGPL | yes | X | X | X | X | M | X | 2007-06-12 | |||||||||||

PLASMA | BSD | yes | X | X | X | X | X | X | 2015-04-27 | |||||||||||

rejtrix | by-nc-sa | yes | X | X | X | X | P | P | 2013-10-01 | |||||||||||

ScaLAPACK | BSD | yes | X | X | X | X | M/P | X | 2012-05-01 | |||||||||||

Trilinos/Pliris | BSD | yes | X | X | X | X | M | X | 2015-05-07 | |||||||||||

ViennaCL | MIT | yes | X | X | X | C/O/X | X | X | X | X | X | 2014-12-11 | ||||||||

SPARSE DIRECT SOLVERS | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

DSCPACK | PD | yes | X | X | X | M | X | ? | ||||||||||||

KKTDirect | PD | yes | X | X | X | X | LDL^{T} |
2010-04-21 | ||||||||||||

MUMPS | CeCILL-C | yes | X | X | X | X | X | M | X | X | X | 2015-02-20 | ||||||||

PaStiX | CeCILL-C | yes | X | X | X | X | X | X | C | M | X | X | X | X | X | 2014-12-18 | ||||

PSPASES | Own | yes | X | X | X | M | X | 1999-05-09 | ||||||||||||

QR-MUMPS | LGPL | yes | X | X | X | X | X | X | 2012-08-01 | |||||||||||

Quern | PD | yes | X | X | X | X | X | X | 2009-02-04 | |||||||||||

SPARSE | Own | ? | X | X | X | X | X | X | 1988-04-01 | |||||||||||

SPOOLES | PD | ? | X | X | X | X | M | X | X | 1999-04-08 | ||||||||||

SPRAL | New BSD | yes | X | X | X | X | X | C | X | X | X | 2015-04-20 | ||||||||

SuiteSparse | LGPL | yes | X | X | X | X | C | X | X | 2015-03-24 | ||||||||||

SuperLU | Own | yes | X | X | X | X | X | C | M | X | 2015-05-01 | |||||||||

TAUCS | Own | yes | X | X | X | X | X | X | X | X | 2003-09-04 | |||||||||

Trilinos/Amesos | LGPL | yes | X | X | X | X | M | X | X | 2015-05-07 | ||||||||||

Trilinos/Amesos2 | BSD | yes | X | X | X | X | M | X | X | 2015-05-07 | ||||||||||

Y12M | ? | yes | X | X | X | X | X | ? | ||||||||||||

PRECONDITIONERS | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

BPKIT | LGPL | yes | X | X | X | X | X | M | 2013-03-11 | |||||||||||

MLD2P4 | BSD | yes | X | X | F90 | X | M | 2011-03-10 | ||||||||||||

MSPAI | LGPL | yes | X | X | X | X | M | 2009-09-17 | ||||||||||||

Trilinos/IFPACK | BSD | yes | X | X | X | M | 2015-05-07 | |||||||||||||

Trilinos/IFPACK2 | BSD | yes | X | X | X | X | M | 2015-05-07 | ||||||||||||

Trilinos/ML | LGPL | yes | X | X | X | X | M | 2015-05-07 | ||||||||||||

Trilinos/MueLu | BSD | yes | X | X | X | X | M | 2015-05-07 | ||||||||||||

Trilinos/Teko | BSD | yes | X | X | X | X | M | 2015-05-07 | ||||||||||||

SPARSE ITERATIVE SOLVERS | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

BDDCML | LGPL | yes | X | X | X | M | X | X | 2014-03-12 | |||||||||||

BILUM | Own | yes | X | X | X | X | X | 1998-03-18 | ||||||||||||

BlockSolve95 | Own | ? | X | X | X | X | M | X | X | 1997-07-08 | ||||||||||

CERFACS | ? | yes | X | X | X | X | X | X | 2007-07-01 | |||||||||||

DUNE / ISTL | GPL | yes | X | X | X | X | M | X | X | 2014-12-18 | ||||||||||

GMM++ | LGPL | yes | X | X | X | X | X | X | X | X | 2014-08-21 | |||||||||

HIPS | CeCILL-C | yes | X | X | X | X | X | X | M | X | X | 2010-10-13 | ||||||||

HYPRE | LGPL | yes | X | X | X | X | M | P | P | P | 2015-01-22 | |||||||||

IML++ | PD | ? | X | X | X | X | X | 1995-01-05 | ||||||||||||

ITL | Own | yes | X | X | X | X | X | 2001-10-26 | ||||||||||||

ITPACK | PD | ? | X | X | X | X | X | 1989-05-01 | ||||||||||||

ITSOL | GPL | yes | X | X | X | X | 2012-10-25 | |||||||||||||

Lis | BSD | yes | X | X | X | X | M | P | P | P | P | 2015-05-14 | ||||||||

PARALUTION | GPL | yes | X | X | X | C/O | X | X | 2015-02-27 | |||||||||||

pARMS | LGPL | yes | X | X | X | X | M | X | X | 2011-01-14 | ||||||||||

PETSc | Own | yes | X | X | X | X | X | C/O | M | P | P | 2015-01-31 | ||||||||

PIM | Own | yes | X | X | X | X | M | X | X | 2003-06-20 | ||||||||||

QMRPACK (tar.gz) | Own | ? | X | X | X | X | X | X | X | X | 1996-04-15 | |||||||||

SLAP | PD | ? | X | X | X | X | 1998-07-21 | |||||||||||||

SOL | CPL or BSD | yes | X | X | X | X | X | X | 2015-05-14 | |||||||||||

SPARSKIT | LGPL | yes | X | X | X | X | 2009-11-18 | |||||||||||||

SPLIB (tar.gz) | Own | ? | X | X | X | X | X | 1999-04-01 | ||||||||||||

Templates | BSD | yes | X | X | X | X | X | X | 1998-07-21 | |||||||||||

Trilinos/AztecOO | BSD | yes | X | X | X | X | X | M | X | X | 2015-05-07 | |||||||||

Trilinos/Belos | BSD | yes | X | X | X | X | M | X | X | 2015-05-07 | ||||||||||

Trilinos/Komplex | BSD | yes | X | X | X | X | M | X | X | 2015-05-07 | ||||||||||

SPARSE EIGENVALUE SOLVERS | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

ARPACK | BSD | yes | X | X | X | X | X | X | M/P | X | X | 2002-09-18 | ||||||||

BLOPEX | LGPL | yes | X | X | X | X | M | P | 2015-03-29 | |||||||||||

FEAST | BSD | yes | X | X | X | X | X | M | X | X | 2015-06-17 | |||||||||

FILTLAN | LGPL | yes | X | X | X | X | 2012-05-07 | |||||||||||||

LASO | PD | ? | X | X | X | X | 1983-06-01 | |||||||||||||

PRIMME | LGPL | yes | X | X | X | X | M/P | X | 2014-12-24 | |||||||||||

PROPACK | BSD | yes | X | X | X | SVD | 2005-04-20 | |||||||||||||

SLEPc | LGPL | yes | X | X | X | X | X | M | X | X | 2014-12-14 | |||||||||

Trilinos/Anasazi | LGPL | yes | X | X | X | X | M | P | P | 2015-05-07 | ||||||||||

TRLan | Own | yes | X | X | F90 | X | X | M | X | 2010-10-10 | ||||||||||

Free for academic use only (not open source) | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

AGMG | Own | yes | X | X | F90 | X | M | X | X | 2014-03-11 | ||||||||||

HSL | Own | yes | X | X | X | X | X | M | X | X | X | X | X | X | 2015-05-15 | |||||

No longer available | License | Support | Type | Language | Mode | Dense | Sparse Direct | Sparse Iterative | Sparse Eigenvalue | Last release date | ||||||||||

Real | Complex | F77/ F95 | C | C++ | Shared | Accel. | Dist | SPD | SI | Gen | SPD | Gen | Sym | Gen | ||||||

SPAI | ? | yes | X | X | X | M | --- | |||||||||||||

PRISM | ? | no | X | X | X | M | X | ? | ||||||||||||

LASPack (see netlib) | ? | ? | X | X | X | X | X | 1996-01-17 | ||||||||||||

Notes: | ||||||||||||||||||||

Type: | ||||||||||||||||||||

Real = Real arithmetic | ||||||||||||||||||||

Complex = Complex arithmetic | ||||||||||||||||||||

Support: Contact information for where you can send questions and bug reports. | ||||||||||||||||||||

Language: F77/F95, C, C++ | ||||||||||||||||||||

Mode: | ||||||||||||||||||||

Shared = shared memory, sequential, vector or SMP/multithreaded versions | ||||||||||||||||||||

Dist = distributed memory message passing (M = MPI, P = PVM) | ||||||||||||||||||||

Accel. = GPU or Accelerator (C=CUDA, O=OpenCL, X=Intel Xeon Phi) | ||||||||||||||||||||

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

SI: The matrix is symmetric indefinite | ||||||||||||||||||||

SPD: The matrix is symmetric and positive definite | ||||||||||||||||||||

Gen: The matrix is general | ||||||||||||||||||||

Iterative: An iterative method is used to solve the system. | ||||||||||||||||||||

SPD: The matrix is symmetric and positive definite | ||||||||||||||||||||

Gen: The matrix is general | ||||||||||||||||||||

P 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) | ||||||||||||||||||||

Gen: The matrix is general | ||||||||||||||||||||

8/4/2015 4:08:35 PM | ||||||||||||||||||||