Difference between revisions of "ITK/Release 4/Refactor Numerical Libraries"

From KitwarePublic
< ITK‎ | Release 4
Jump to navigationJump to search
 
(15 intermediate revisions by 2 users not shown)
Line 14: Line 14:
  
 
[[ITK_Release_4/Refactor Numerical Libraries/Inventory|Inventory of Numerical Libraries]]
 
[[ITK_Release_4/Refactor Numerical Libraries/Inventory|Inventory of Numerical Libraries]]
 +
 +
= Licensing =
 +
 +
= Alternatives =
 +
 +
= 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]]
 +
 +
= 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
 +
** <span style="color:green">Remove netlib code</span>
 +
*** <span style="color:green">Done.  (Chuck Atkins)</span>
 +
** <span style="color:green">Netlib lbfgsb code links to LINPACK for dpofa.  Needs to be ported to LAPACK dpotrf.</span>
 +
*** <span style="color:green">Done.  (Chuck Atkins)</span>
 +
** Port vnl classes using LINPACK over to calling LAPACKE interface into LAPACK.
 +
* Remove EISPACK
 +
** <span style="color:green">Remove netlib code</span>
 +
*** <span style="color:green">Done.  (Chuck Atkins)</span>
 +
** Port vnl classes using EISPACK over to calling LAPACKE interface into LAPACK.
 +
* Replace f2c reference BLAS with the CBLAS, the C interface to BLAS linking against an externally supplied BLAS.
 +
** <span style="color:green">Remove netlib f2c code and replace with CBLAS</span>
 +
*** <span style="color:green">Done.  (Chuck Atkins)</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">Port vnl classes using BLAS over to calling CBLAS interface into BLAS.</span>
 +
*** <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.
 +
** <span style="color:green">Remove netlib f2c code and replace with LAPACKE</span>
 +
*** <span style="color:green">Done.  (Chuck Atkins)</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">In Progress.  (Chuck Atkins, Julie Langou)</span>
 +
**** <span style="color:goldenrod">Converted function calls but tests don't pass. (Chuck Atkins)</span>
 +
*** <span style="color:goldenrod">vnl_complex_eigenssytem</span>
 +
*** <span style="color:goldenrod">vnl_generalized_schur</span>
 +
*** <span style="color:goldenrod">vnl_complex_generalized_schur</span>
 +
*** <span style="color:goldenrod">test_qsvd</span>
 +
* 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">In Progress. (Chuck Atkins)</span>

Latest revision as of 12: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 EISPACK
    • Remove netlib code
      • Done. (Chuck Atkins)
    • Port vnl classes using EISPACK over to calling LAPACKE interface into LAPACK.
  • 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
    • Port vnl classes using BLAS over to calling CBLAS interface into BLAS.
      • N/A (No calls to BLAS in vnl. (Chuck Atkins)
  • 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.
    • 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
  • Optimize LBFGSB code using level 3 BLAS routines
  • Implement vnl matrix and vector operations in terms of CBLAS
    • In Progress. (Chuck Atkins)