ITK/Release 4/Refactor Numerical Libraries: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Chuck.atkins (talk | contribs) |
Daviddoria (talk | contribs) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 21: | Line 21: | ||
= Tcons = | = Tcons = | ||
* [[ITK_Release_4/Refactor Numerical Libraries/Tcon_2011_08_31|2011 08 31]] | |||
* [[ITK_Release_4/Refactor Numerical Libraries/Tcon_2011_08_24|2011 08 24]] | * [[ITK_Release_4/Refactor Numerical Libraries/Tcon_2011_08_24|2011 08 24]] | ||
= Repository = | |||
Currently there is a github clone of the ITK repository under Chuck's github page: https://github.com/chuckatkins/ITK . There is a branch numlibs_refactor where the effort can be worked on. | |||
= Progress = | = Progress = | ||
Line 39: | Line 43: | ||
**** <span style="color:green">cblas.h slightly modified to better handle complex numbers in C++</span> | **** <span style="color:green">cblas.h slightly modified to better handle complex numbers in C++</span> | ||
**** <span style="color:green">Build modified to remove remaining FORTRAN dependencies</span> | **** <span style="color:green">Build modified to remove remaining FORTRAN dependencies</span> | ||
** <span style="color: | ** <span style="color:green">Port vnl classes using BLAS over to calling CBLAS interface into BLAS.</span> | ||
*** <span style="color: | *** <span style="color:green">N/A (No calls to BLAS in vnl. (Chuck Atkins)</span> | ||
* Replace f2c LAPACK with LAPACKE, the C interface to LAPACK linking against an externally supplied LAPACK. | * Replace f2c LAPACK with LAPACKE, the C interface to LAPACK linking against an externally supplied LAPACK. | ||
** <span style="color:green">Remove netlib f2c code and replace with LAPACKE</span> | ** <span style="color:green">Remove netlib f2c code and replace with LAPACKE</span> | ||
Line 46: | Line 50: | ||
**** <span style="color:green">lapacke.h slightly modified to better handle complex numbers in C++ and to remove prototypes of extended precision LAPACK functions that are not available in slightly older LAPACK interfaces.</span> | **** <span style="color:green">lapacke.h slightly modified to better handle complex numbers in C++ and to remove prototypes of extended precision LAPACK functions that are not available in slightly older LAPACK interfaces.</span> | ||
** <span style="color:goldenrod">Port vnl classes using LAPACK over to calling LAPACKE interface into LAPACK</span> | ** <span style="color:goldenrod">Port vnl classes using LAPACK over to calling LAPACKE interface into LAPACK</span> | ||
*** <span style="color:goldenrod">In Progress. (Chuck Atkins)</span> | *** <span style="color:goldenrod">In Progress. (Chuck Atkins, Julie Langou)</span> | ||
*** <span style="color: | **** <span style="color:goldenrod">Converted function calls but tests don't pass. (Chuck Atkins)</span> | ||
*** <span style="color: | *** <span style="color:goldenrod">vnl_complex_eigenssytem</span> | ||
*** <span style="color: | *** <span style="color:goldenrod">vnl_generalized_schur</span> | ||
*** <span style="color:goldenrod">vnl_complex_generalized_schur</span> | |||
*** <span style="color:goldenrod">test_qsvd</span> | *** <span style="color:goldenrod">test_qsvd</span> | ||
* Optimize LBFGSB code using level 3 BLAS routines | * Optimize LBFGSB code using level 3 BLAS routines | ||
* <span style="color:goldenrod">Implement vnl matrix and vector operations in terms of CBLAS</span> | * <span style="color:goldenrod">Implement vnl matrix and vector operations in terms of CBLAS</span> | ||
** <span style="color:goldenrod">In Progress. (Chuck Atkins)</span> | ** <span style="color:goldenrod">In Progress. (Chuck Atkins)</span> |
Latest revision as of 16:01, 9 December 2011
Background
ITK largely relies on third party libraries to provide support for numerical computations such as linear solvers, eigen analysis and non-linear optimization. These libraries have been integrated over the years of the project, based on content from other libraries, immediate needs and requirements of particular projects.
Goal
- The purpose of this project is to revise the numerical libraries currently used in ITK, and to determine whether they are the best (or a good enough) option to use, and whether they are being used properly in the toolkit.
- When appropriate, some of these libraries will be replaced with better options.
- When possible, the code will be restructured to make possible for users to pick other options of third party libraries that may provide better support for their particular applications.
Inventory
- First, we proceed to make an inventory of the numerical libraries currently used in ITK. This will serve as basis for the analysis of whether there are better options to use, and/or whether they are being used correctly.
Inventory of Numerical Libraries
Licensing
Alternatives
Tcons
Repository
Currently there is a github clone of the ITK repository under Chuck's github page: https://github.com/chuckatkins/ITK . There is a branch numlibs_refactor where the effort can be worked on.
Progress
- Remove LINPACK
- Remove netlib code
- Done. (Chuck Atkins)
- Netlib lbfgsb code links to LINPACK for dpofa. Needs to be ported to LAPACK dpotrf.
- Done. (Chuck Atkins)
- Port vnl classes using LINPACK over to calling LAPACKE interface into LAPACK.
- Remove netlib code
- Remove EISPACK
- Remove netlib code
- Done. (Chuck Atkins)
- Port vnl classes using EISPACK over to calling LAPACKE interface into LAPACK.
- Remove netlib code
- Replace f2c reference BLAS with the CBLAS, the C interface to BLAS linking against an externally supplied BLAS.
- Remove netlib f2c code and replace with CBLAS
- Done. (Chuck Atkins)
- cblas.h slightly modified to better handle complex numbers in C++
- Build modified to remove remaining FORTRAN dependencies
- Done. (Chuck Atkins)
- Port vnl classes using BLAS over to calling CBLAS interface into BLAS.
- N/A (No calls to BLAS in vnl. (Chuck Atkins)
- Remove netlib f2c code and replace with CBLAS
- Replace f2c LAPACK with LAPACKE, the C interface to LAPACK linking against an externally supplied LAPACK.
- Remove netlib f2c code and replace with LAPACKE
- Done. (Chuck Atkins)
- lapacke.h slightly modified to better handle complex numbers in C++ and to remove prototypes of extended precision LAPACK functions that are not available in slightly older LAPACK interfaces.
- Done. (Chuck Atkins)
- Port vnl classes using LAPACK over to calling LAPACKE interface into LAPACK
- In Progress. (Chuck Atkins, Julie Langou)
- Converted function calls but tests don't pass. (Chuck Atkins)
- vnl_complex_eigenssytem
- vnl_generalized_schur
- vnl_complex_generalized_schur
- test_qsvd
- In Progress. (Chuck Atkins, Julie Langou)
- Remove netlib f2c code and replace with LAPACKE
- Optimize LBFGSB code using level 3 BLAS routines
- Implement vnl matrix and vector operations in terms of CBLAS
- In Progress. (Chuck Atkins)