ITK/Release 4/Refactor Numerical Libraries/Inventory: Difference between revisions
Daviddoria (talk | contribs) m (moved ITK Release 4/Refactor Numerical Libraries/Inventory to ITK/Release 4/Refactor Numerical Libraries/Inventory) |
|||
(13 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
* [[ITK_Release_4/Refactor Numerical Libraries/Inventory/Fourier Transforms|Fourier Transforms]] | |||
* [[ITK_Release_4/Refactor Numerical Libraries/Inventory/Non-Linear Optimization|Non-Linear Optimization]] | * [[ITK_Release_4/Refactor Numerical Libraries/Inventory/Non-Linear Optimization|Non-Linear Optimization]] | ||
* [[ITK_Release_4/Refactor Numerical Libraries/Inventory/ | * [[ITK_Release_4/Refactor Numerical Libraries/Inventory/Linear Solvers|Linear Solvers]] | ||
** Dense Matrices (typically small, less than 100x100) | ** Dense Matrices (typically small, less than 100x100) | ||
** Sparse Matrices | ** Sparse Matrices | ||
Line 20: | Line 19: | ||
*** Matrix . Matrix operations (for matrix size 2x2, 3x3, 4x4, 3x4) | *** Matrix . Matrix operations (for matrix size 2x2, 3x3, 4x4, 3x4) | ||
*** Matrix . Vector operations (for matrix size 2x2, 3x3, 4x4, 3x4) | *** Matrix . Vector operations (for matrix size 2x2, 3x3, 4x4, 3x4) | ||
*Special Functions | |||
** Modified Bessel Function of the first kind | |||
*** Important for computing the discrete Gaussian kernel | |||
* [[ITK_Release_4/Refactor Numerical Libraries/Inventory/Accumulation of Rounding Errors|Accumulation of Rounding Errors]] | |||
= Architecture = | = Architecture = | ||
Line 26: | Line 29: | ||
** Multi-Core machines | ** Multi-Core machines | ||
** Exploits Multi-threaded implementations | ** Exploits Multi-threaded implementations | ||
= Profiling Targets = | |||
The following problems have been selected as interesting targets for profiling performance. | |||
== 3D Registration == | |||
* ITK/Examples/Registration/ImageRegistration8.cxx | |||
** Led to identify a bottleneck on the allocation and deallocation of Jacobian Matrices | |||
*** Work In Progress patch here: http://review.source.kitware.com/#change,2774 | |||
== Demons Registration == | |||
* ITK/Examples/Registration/DeformableRegistration10.cxx | |||
== BSpline Registration == | |||
* ITK/Examples/Registration/DeformableRegistration15.cxx | |||
== Level Sets == | |||
* ITK/Examples/Registration/GeodesicActiveContourImageFilter.cxx | |||
== ImageRegionIterator == | |||
The profiling exercise of the DeformableRegistration15 revealed that the ImageRegionIterator is performing about 20% slower than the ImageRegionIteratorWithIndex, which shouldn't be the case, given that the ImageRegionIterator was designed to be faster and take advantage of the fact that it doesn't maintain an internal cached Index value that need continuous updating. | |||
This call for a code revision of the Increment() method in the ImageRegionIterator. | |||
== ResampleImageFilter == | |||
* The computation of the ResampleImageFilter is taking a disproportionate amount of time. Actually more that the computation of the registration. This class needs a profiling urgently. | |||
= Portability = | = Portability = |
Latest revision as of 16:01, 9 December 2011
In this page we collect an inventory of numerical libraries in ITK base on the state of the code at the ITKv4-Alpha09 Git tag.
ITK Numerical Needs
ITK needs for numerical libraries fall in the following broad categories
- Fourier Transforms
- Non-Linear Optimization
- Linear Solvers
- Dense Matrices (typically small, less than 100x100)
- Sparse Matrices
- Large Sparse Matrices (e.g. FEM type problems)
- Matrix Vector Operations
- A lot of them are
- Matrix . Matrix operations (for matrix size 2x2, 3x3, 4x4, 3x4)
- Matrix . Vector operations (for matrix size 2x2, 3x3, 4x4, 3x4)
- A lot of them are
- Special Functions
- Modified Bessel Function of the first kind
- Important for computing the discrete Gaussian kernel
- Modified Bessel Function of the first kind
- Accumulation of Rounding Errors
Architecture
- ITK is focused on shared memory systems
- Multi-Core machines
- Exploits Multi-threaded implementations
Profiling Targets
The following problems have been selected as interesting targets for profiling performance.
3D Registration
- ITK/Examples/Registration/ImageRegistration8.cxx
- Led to identify a bottleneck on the allocation and deallocation of Jacobian Matrices
- Work In Progress patch here: http://review.source.kitware.com/#change,2774
- Led to identify a bottleneck on the allocation and deallocation of Jacobian Matrices
Demons Registration
- ITK/Examples/Registration/DeformableRegistration10.cxx
BSpline Registration
- ITK/Examples/Registration/DeformableRegistration15.cxx
Level Sets
- ITK/Examples/Registration/GeodesicActiveContourImageFilter.cxx
ImageRegionIterator
The profiling exercise of the DeformableRegistration15 revealed that the ImageRegionIterator is performing about 20% slower than the ImageRegionIteratorWithIndex, which shouldn't be the case, given that the ImageRegionIterator was designed to be faster and take advantage of the fact that it doesn't maintain an internal cached Index value that need continuous updating.
This call for a code revision of the Increment() method in the ImageRegionIterator.
ResampleImageFilter
- The computation of the ResampleImageFilter is taking a disproportionate amount of time. Actually more that the computation of the registration. This class needs a profiling urgently.
Portability
ITK is intended to work in the most popular platforms.
More specifically
- Windows
- Linux
- Macs
With commonly used compilers
- Visual Studio 7.1 to 10
- GCC 3.4 to 4.6
- Intel Compiler
- Sun CC compiler
A more detailed list of supported compiles can be found here:
Libraries Used
- Work in progress...