ITK/Release 4/Refactor Numerical Libraries/Inventory/Linear Solvers: Difference between revisions
(→In VXL) |
(→In VXL) |
||
Line 36: | Line 36: | ||
== In VXL == | == In VXL == | ||
LSQR is implemented in VXL | LSQR is implemented in VXL: | ||
ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.h | ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.h | ||
ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.cxx | ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.cxx | ||
Unfortunately the VXL implementation is done using source code taken from '''netlib''', and that code happens to be copyrighted by ACM. The license that ACM provides for algorithms preclude their use in the ITK ecosystem. |
Revision as of 12:48, 12 September 2011
The Problem
It certain ITK applications it is common to need to solve the linear system
A.x = b
Where
- A is a large sparse matrix
- x is a vector
- b is a vector
The common approach to solve this problem is to use linear solvers.
Use Cases
FEM
The most significant case where large sparse matrix appear is in the computation of Finite Element Methods (FEM). In ITK, this is done for the purpose of computing Deformable Registration between images.
Exploration
In the past, ITK developers have explored alternative solutions for solving large sparse matrices.
The findings were codified at the time in the following Wiki page:
LSQR
The initial approach in ITK to solve large sparse linear systems involved the use of the LSQR method.
In VXL
LSQR is implemented in VXL:
ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.h ITK/Modules/ThirdParty/VNL/src/vxl/core/vnl/algo/vnl_lsqr.cxx
Unfortunately the VXL implementation is done using source code taken from netlib, and that code happens to be copyrighted by ACM. The license that ACM provides for algorithms preclude their use in the ITK ecosystem.