Difference between revisions of "Proposals:Sparse Linear Solvers"

From KitwarePublic
Jump to navigationJump to search
 
(32 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://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://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://www.cise.ufl.edu/research/sparse/SuiteSparse SuiteSparse] || LGPL ||   ||   ||  || Unknown ||  Unknown ||  
| [http://www.ime.unicamp.br/~chico/arpack++/ ARPACK++] || BSD || Templates || Yes ||   || C++ || Unknown || No ||  ||  
|-
|-
| [http://code.google.com/p/taucs/ TAUCS] || MIT ||   ||   || C || Unknown || Unknown ||
| [http://www.caam.rice.edu/software/ARPACK/ ARPACK] || New BSD || 1.5 Mb || Yes ||   || FORTRAN || Unknown || No ||  ||  
|-
|-
| [http://crd.lbl.gov/~xiaoye/SuperLU/ SuperLU] || BSD ||   ||   ||  || Unknown || Unknown ||  
| [http://graal.ens-lyon.fr/MUMPS/ MUMPS] || Public Domain || 11 Mb  || Yes ||  ||  FORTRAN 90 || Unknown || Unknown ||  ||  
|-
|-
| [http://eigen.tuxfamily.org/index.php?title=Main_Page Eigen] || LGPL ||   ||  ||  C++ || Unknown || Unknown ||
| [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://mathema.tician.de/software/boost-bindings Boost Numeric Bindings] ||  ||   ||  ||   || Unknown || Unknown ||  
| [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://www.ime.unicamp.br/~chico/arpack++/ ARPACK++] || ||   ||  || C++ || Unknown || Unknown ||  
| [http://icl.cs.utk.edu/plasma/index.html PLASMA] || BSD || 13 Mb || No || Yes || C + FORTRAN ||   ||   ||  Yes ||  
|-
|-
| [http://graal.ens-lyon.fr/MUMPS/ MUMPS] || Public Domain || 11 Mb || ||  || Unknown || Unknown ||  
| [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://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz clapack] || BSD || 22 Mb ||  ??  || C || 80% || Unknown || Yes
| [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://icl.cs.utk.edu/plasma/index.html PLASMA] || BSD || 13 Mb ||   ||   ||   ||   ||  Yes
| [http://alice.loria.fr/index.php/software/4-library/23-opennl.html OpenNL] || BSD || 5.0Mb || Yes || ?? || || 0% (no tests) ||  Unknown (no tests) || Yes ||
|-
|-
|}
|}
Line 45: 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 60: 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 70: 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++ ==


* To solve eigen value problems
* 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 ==
* http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=1746
* Source Code
** svn co http://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk
** svn co http://icl.cs.utk.edu/svn/scalapack-dev
** svn co https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk 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 87: 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.eecs.utk.edu/svn/lapack-dev/clapack/trunk
* Repository:  
** Closed to the public ??
** 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 94: 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:

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

TAUCS

SuperLU

Eigen

MUMPS

Boost uBLAS + Numeric Bindings

ARPACK++

ARPACK

lapack

clapack

PLASMA

OpenNL

LSQR