Proposals:Sparse Linear Solvers: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
(→lapack) |
|||
(28 intermediate revisions by 4 users not shown) | |||
Line 6: | Line 6: | ||
The current solution obtained though VXL must be replaced because it relies internally on code whose Copyright is held by ACM, and is subject to a license that precludes commercial use. | The current solution obtained though VXL must be replaced because it relies internally on code whose Copyright is held by ACM, and is subject to a license that precludes commercial use. | ||
Some interesting threads from the mailing lists about this issue: | |||
* [http://old.nabble.com/Replacing-Sparse-Matrix-Linear-Solver-%3A-due-to-Licensing-issues-ts27395908.html Replacing Sparse Matrix Linear Solver : due to Licensing issues] | |||
* [http://old.nabble.com/Scope-of-VTK-and-it%27s-potential-as-a-common-research-language-tt27105322.html Scope of VTK and it's potential as a common research language] | |||
* [http://old.nabble.com/Scope-of-VTK-and-it%27s-potential-as-a-common-research-language-tt27390353.html Scope of VTK and it's potential as a common research language (continued)] | |||
= Previous Review = | = Previous Review = | ||
Line 21: | Line 26: | ||
{| border="1" | {| border="1" | ||
|- bgcolor="#abcdef" | |- bgcolor="#abcdef" | ||
! Name !! License !! Size !! Support Sparse !! Language !! Coverage || Valgrind || CMakeified | ! Name !! License !! Size !! Support Sparse !! Support Dense !! Language !! Coverage || Valgrind || CMakeified || Dashboard | ||
|- | |||
| [http://www.cise.ufl.edu/research/sparse/SuiteSparse SuiteSparse] || LGPL / GPL || || Yes || || C/C++ (with Fortran and Matlab interfaces) || Unknown || Unknown || || | |||
|- | |||
| [http://www.tau.ac.il/~stoledo/taucs/ TAUCS] [http://code.google.com/p/taucs/ google code page] || MIT || || Yes || || C || Unknown || Unknown || || | |||
|- | |||
| [http://crd.lbl.gov/~xiaoye/SuperLU/ SuperLU] || BSD || || Yes || || C || Unknown || Unknown || || | |||
|- | |- | ||
| [http:// | | [http://eigen.tuxfamily.org/index.php?title=Main_Page Eigen] || LGPL v3 (headers only) || 3.8 Mb || Yes || Yes || C++ || Unknown || Unknown || Yes || [http://eigen.tuxfamily.org/CDash/index.php Yes] | ||
|- | |- | ||
| [http:// | | [http://www.boost.org/doc/libs/release/libs/numeric Boost uBLAS] + [http://mathema.tician.de/software/boost-bindings Numeric Bindings] or [http://www.guwi17.de/ublas/examples/ user contributions] || [http://www.boost.org/LICENSE_1_0.txt Boost License] but need to check binded libs || || Yes || Yes || C++ || Unknown || Unknown || [http://sodium.resophonic.com/boost-cmake/current-docs/index.html Under development] || [http://www.boost.org/development/tests/trunk/developer/numeric-ublas.html Yes for uBLAS] | ||
|- | |- | ||
| [http:// | | [http://www.ime.unicamp.br/~chico/arpack++/ ARPACK++] || BSD || Templates || Yes || || C++ || Unknown || No || || | ||
|- | |- | ||
| [http:// | | [http://www.caam.rice.edu/software/ARPACK/ ARPACK] || New BSD || 1.5 Mb || Yes || || FORTRAN || Unknown || No || || | ||
|- | |- | ||
| [http:// | | [http://graal.ens-lyon.fr/MUMPS/ MUMPS] || Public Domain || 11 Mb || Yes || || FORTRAN 90 || Unknown || Unknown || || | ||
|- | |- | ||
| [http:// | | [http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1746 lapack] || BSD || 86 Mb || No || Yes || Fortran || ?? || Unknown || Yes || [http://my.cdash.org/index.php?project=LAPACK ??] | ||
|- | |- | ||
| [http:// | | [http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz clapack] || BSD || 22 Mb || No || Yes || C || 80% || Unknown || Yes || [http://my.cdash.org/index.php?project=CLAPACK Yes] | ||
|- | |- | ||
| [http://icl.cs.utk.edu/ | | [http://icl.cs.utk.edu/plasma/index.html PLASMA] || BSD || 13 Mb || No || Yes || C + FORTRAN || || || Yes || | ||
|- | |- | ||
| [http:// | | [http://alice.loria.fr/index.php/software/4-library/23-opennl.html OpenNL] || ?, BSD || 2.8 Mb || Yes || || C, C++, CUDA || Unknown || Unknown || Yes || | ||
|- | |- | ||
| [http:// | | [http://www.stanford.edu/group/SOL/software/lsqr.html LSQR] || CPL (& [http://www.stanford.edu/group/SOL/software.html BSD]?) || || Yes || No || C, Fortran || || || Yes (already in ITK) || [http://www.cdash.org/CDash/index.php?project=Insight Part of ITK dashboard] | ||
|- | |||
| [http://alice.loria.fr/index.php/software/4-library/23-opennl.html OpenNL] || BSD || 5.0Mb || Yes || ?? || C || 0% (no tests) || Unknown (no tests) || Yes || | |||
|- | |- | ||
|} | |} | ||
Line 47: | Line 60: | ||
== SuiteSparse == | == SuiteSparse == | ||
* License: LGPL | * License: LGPL / GPL (depending on the submodules, e.g. [http://www.cise.ufl.edu/research/sparse/CSparse/CSparse/Doc/License.txt CSparse] and [http://www.cise.ufl.edu/research/sparse/SPQR/SPQR/Doc/gpl.txt SuiteSparseQR]) | ||
* Home: http://www.cise.ufl.edu/research/sparse/SuiteSparse | * Home: http://www.cise.ufl.edu/research/sparse/SuiteSparse | ||
Line 62: | Line 75: | ||
== Eigen == | == Eigen == | ||
* License: LGPL | * License: LGPL v3 headers only (The authors [http://eigen.tuxfamily.org/index.php?title=Licensing_FAQ#Using_Eigen_in_BSD-licensed_software claim] it is compatible with BSD software) | ||
* Home: http://eigen.tuxfamily.org/index.php?title=Main_Page | * Home: http://eigen.tuxfamily.org/index.php?title=Main_Page | ||
* Cdash dashboard [http://eigen.tuxfamily.org/CDash/index.php here] | |||
* Support for both sparse and dense matrices and algorithms | |||
* [https://launchpad.net/pyeigen Python bindings] are available with BSD licence | |||
== MUMPS == | == MUMPS == | ||
Line 72: | Line 88: | ||
** BLAS | ** BLAS | ||
== Boost Numeric Bindings == | == Boost uBLAS + Numeric Bindings == | ||
* License: seems to be BSD (but links to MUMPS, UMFPack, so better check with them directly) | * [http://www.boost.org/doc/libs/release/libs/numeric uBLAS hompage] | ||
* http://mathema.tician.de/software/boost-bindings | ** [http://www.boost.org/LICENSE_1_0.txt Boost Software License] | ||
* Numeric bindings | |||
** License: seems to be BSD (but links to MUMPS, UMFPack, so better check with them directly) | |||
** [http://mathema.tician.de/software/boost-bindings Packaged version of the old hand-written version of boost bindings] | |||
** [https://svn.boost.org/svn/boost/sandbox/numeric_bindings/ Trunk version of the automatically generated boost bindings] | |||
*** Things might be [http://permalink.gmane.org/gmane.comp.lib.boost.ublas/5573 moving towards a real release] | |||
* Alternatives to the numeric bindings for uBLAS could be to rely on: | |||
** Some [http://www.guwi17.de/ublas/examples/ user contributions]. This contains code for Cholesky decomposition, GMRES method, etc. | |||
** [http://devernay.free.fr/hacks/ublasJama.html ublasJama] a public domain port of [http://math.nist.gov/javanumerics/jama/ JAMA (Java Matrix Package)] for uBLAS | |||
== ARPACK++ == | == ARPACK++ == | ||
* | * C++ Template API for sparse matrix containers and API to ARPACK FORTRAN library solvers | ||
* License: | * License: BSD | ||
* http://www.ime.unicamp.br/~chico/arpack++/ | * http://www.ime.unicamp.br/~chico/arpack++/ | ||
== ARPACK == | |||
* to solve large scale eigenvalue problems | |||
* License: New BSD | |||
* http://www.caam.rice.edu/software/ARPACK/ | |||
== lapack == | == lapack == | ||
Line 91: | Line 121: | ||
** svn co https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk lapack | ** svn co https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk lapack | ||
* Dashboard: http://my.cdash.org/index.php?project=LAPACK | * Dashboard: http://my.cdash.org/index.php?project=LAPACK | ||
* Main maintainer Site: | |||
** Innovative Computing Laboratory | |||
** University of Tennessee from Denver, Colorado | |||
== clapack == | == clapack == | ||
Line 98: | Line 131: | ||
* Source code release: http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz | * Source code release: http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz | ||
* Home page: https://icl.eecs.utk.edu/ | * Home page: https://icl.eecs.utk.edu/ | ||
* Repository: https://icl. | * Repository: | ||
** | ** https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk/ | ||
** The code is generated from the FORTRAN version of lapack. The generation process is not under source control. | |||
* Main maintainer Site: | |||
** Innovative Computing Laboratory | |||
** University of Tennessee from Denver, Colorado | |||
== PLASMA == | == PLASMA == | ||
Line 105: | Line 142: | ||
* Home Page: http://icl.cs.utk.edu/plasma/index.html | * Home Page: http://icl.cs.utk.edu/plasma/index.html | ||
* License: BSD | * License: BSD | ||
== OpenNL == | |||
* Home Page: http://alice.loria.fr/index.php/software/4-library/23-opennl.html | |||
* License: BSD | |||
** (as specified in the header of source files) | |||
* Size: 5.0 Mb | |||
== LSQR == | |||
* Home Page: http://www.stanford.edu/group/SOL/software/lsqr.html | |||
* Already in ITK through the VXL-VNL-netlib chain | |||
* License: CPL but looks to be also licensable under [http://www.stanford.edu/group/SOL/software.html BSD] |
Latest revision as of 07:44, 24 June 2010
The Problem
ITK requires functionalities for solving large sparse linear systems.
The current solution obtained though VXL must be replaced because it relies internally on code whose Copyright is held by ACM, and is subject to a license that precludes commercial use.
Some interesting threads from the mailing lists about this issue:
- Replacing Sparse Matrix Linear Solver : due to Licensing issues
- Scope of VTK and it's potential as a common research language
- Scope of VTK and it's potential as a common research language (continued)
Previous Review
Tom Vercauteren previously gathered the following list of options.
ITK_Release_4.0#3rd_Party_Libraries
Options
Comparative Table
Name | License | Size | Support Sparse | Support Dense | Language | Coverage | Valgrind | CMakeified | Dashboard |
---|---|---|---|---|---|---|---|---|---|
SuiteSparse | LGPL / GPL | Yes | C/C++ (with Fortran and Matlab interfaces) | Unknown | Unknown | ||||
TAUCS google code page | MIT | Yes | C | Unknown | Unknown | ||||
SuperLU | BSD | Yes | C | Unknown | Unknown | ||||
Eigen | LGPL v3 (headers only) | 3.8 Mb | Yes | Yes | C++ | Unknown | Unknown | Yes | Yes |
Boost uBLAS + Numeric Bindings or user contributions | Boost License but need to check binded libs | Yes | Yes | C++ | Unknown | Unknown | Under development | Yes for uBLAS | |
ARPACK++ | BSD | Templates | Yes | C++ | Unknown | No | |||
ARPACK | New BSD | 1.5 Mb | Yes | FORTRAN | Unknown | No | |||
MUMPS | Public Domain | 11 Mb | Yes | FORTRAN 90 | Unknown | Unknown | |||
lapack | BSD | 86 Mb | No | Yes | Fortran | ?? | Unknown | Yes | ?? |
clapack | BSD | 22 Mb | No | Yes | C | 80% | Unknown | Yes | Yes |
PLASMA | BSD | 13 Mb | No | Yes | C + FORTRAN | Yes | |||
OpenNL | ?, BSD | 2.8 Mb | Yes | C, C++, CUDA | Unknown | Unknown | Yes | ||
LSQR | CPL (& BSD?) | Yes | No | C, Fortran | Yes (already in ITK) | Part of ITK dashboard | |||
OpenNL | BSD | 5.0Mb | Yes | ?? | C | 0% (no tests) | Unknown (no tests) | Yes |
SuiteSparse
- License: LGPL / GPL (depending on the submodules, e.g. CSparse and SuiteSparseQR)
- Home: http://www.cise.ufl.edu/research/sparse/SuiteSparse
TAUCS
- License: MIT
- Home: http://code.google.com/p/taucs/
SuperLU
- License: BSD
- Home: http://crd.lbl.gov/~xiaoye/SuperLU/
Eigen
- License: LGPL v3 headers only (The authors claim it is compatible with BSD software)
- Home: http://eigen.tuxfamily.org/index.php?title=Main_Page
- Cdash dashboard here
- Support for both sparse and dense matrices and algorithms
- Python bindings are available with BSD licence
MUMPS
- License:
- http://graal.ens-lyon.fr/MUMPS/
- Requires
- BLAS
Boost uBLAS + Numeric Bindings
- uBLAS hompage
- Numeric bindings
- License: seems to be BSD (but links to MUMPS, UMFPack, so better check with them directly)
- Packaged version of the old hand-written version of boost bindings
- Trunk version of the automatically generated boost bindings
- Things might be moving towards a real release
- Alternatives to the numeric bindings for uBLAS could be to rely on:
- Some user contributions. This contains code for Cholesky decomposition, GMRES method, etc.
- ublasJama a public domain port of JAMA (Java Matrix Package) for uBLAS
ARPACK++
- C++ Template API for sparse matrix containers and API to ARPACK FORTRAN library solvers
- License: BSD
- http://www.ime.unicamp.br/~chico/arpack++/
ARPACK
- to solve large scale eigenvalue problems
- License: New BSD
- http://www.caam.rice.edu/software/ARPACK/
lapack
- http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1746
- Source Code
- Dashboard: http://my.cdash.org/index.php?project=LAPACK
- Main maintainer Site:
- Innovative Computing Laboratory
- University of Tennessee from Denver, Colorado
clapack
- Dashboard: http://my.cdash.org/index.php?project=CLAPACK
- License:
- Source code release: http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz
- Home page: https://icl.eecs.utk.edu/
- Repository:
- https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk/
- The code is generated from the FORTRAN version of lapack. The generation process is not under source control.
- Main maintainer Site:
- Innovative Computing Laboratory
- University of Tennessee from Denver, Colorado
PLASMA
- Home Page: http://icl.cs.utk.edu/plasma/index.html
- License: BSD
OpenNL
- Home Page: http://alice.loria.fr/index.php/software/4-library/23-opennl.html
- License: BSD
- (as specified in the header of source files)
- Size: 5.0 Mb
LSQR
- Home Page: http://www.stanford.edu/group/SOL/software/lsqr.html
- Already in ITK through the VXL-VNL-netlib chain
- License: CPL but looks to be also licensable under BSD