[ITK] [ITK-dev] efficiency of vnl_matrix
Bradley Lowekamp
blowekamp at mail.nih.gov
Thu Mar 12 08:32:18 EDT 2015
Hello,
If I was writing my own ITK classes, and needed a fast matrix library I would likely pursue an additional dependency on an efficient numeric library for that project, such as eigen.
However for the broad appeal of ITK I would think a flexible back end would be best. As I think there are a variety of BLAS and LAPACK libraries available ( commercial, open source, vender free ). It would be nice to pick one what has been optimized for the current architecture. I would think it would be most flexible to use this interface in the back end of a chosen numeric interface ( currently VNL ). Unfortunately, I don't have as much experience with these libraries as I'd like.
Brad
On Mar 12, 2015, at 5:15 AM, m.staring at lumc.nl wrote:
> Hi,
>
> I think the eigen library is a mature and very fast library for these kind of things:
> http://eigen.tuxfamily.org/index.php?title=Main_Page
>
> You may want to check it out, to see if it offers what you need.
>
> It would be great to be able to use these within the itk.
>
> 2c
> Marius
>
> -----Original Message-----
> From: Insight-developers [mailto:insight-developers-bounces at itk.org] On Behalf Of Jian Cheng
> Sent: Wednesday, March 11, 2015 23:17
> To: Matt McCormick
> Cc: Chuck Atkins; ITK
> Subject: Re: [ITK-dev] efficiency of vnl_matrix
>
> Hi Matt,
>
> Thanks for your help, and also for the ITK workshop in UNC last time.
>
> It is very unfortunate. The efficiency of these numerical math operators are very important for many applications.
>
> I recently released an ITK based toolbox, called dmritool, for diffusion MRI data processing.
> It has some files to add some supports of blas, lapack, mkl to vnl_matrix and vnl_vector.
> http://diffusionmritool.github.io/dmritool_doxygen/utlBlas_8h_source.html
> http://diffusionmritool.github.io/dmritool_doxygen/utlVNLBlas_8h_source.html
>
> Those functions are not internally for vnl_matrix class. They are operators for the data pointer stored in vnl_matrix object.
> Thus, later I made a N-dimensional array library which internally includes those functions, and also supports expression template to avoid temporary copies.
> http://diffusionmritool.github.io/dmritool_doxygen/utlMatrix_8h_source.html
> http://diffusionmritool.github.io/dmritool_doxygen/utlVector_8h_source.html
>
> The efficiency comparison between vnl_vector/vnl_matrix and the vector/matrix using openblas, lapack, or mkl can be found by running those two tests https://github.com/DiffusionMRITool/dmritool/blob/master/Modules/HelperFunctions/test/utlVNLBlasGTest.cxx
> https://github.com/DiffusionMRITool/dmritool/blob/master/Modules/HelperFunctions/test/utlVNLLapackGTest.cxx
>
> Maybe some codes can be used as patches in somewhere in ITK. I am not sure. Maybe we need more discussion on it.
> With your help and discussion, I will be very glad to make my first patch to ITK.
> Thanks.
>
> best,
> Jian Cheng
>
>
> On 03/11/2015 04:39 PM, Matt McCormick wrote:
>> Hi Jian,
>>
>> Yes, it would be wonderful to improve the efficiency of these basic
>> numerical operations.
>>
>> Funding for the Refactor Numerical Libraries has currently ended, and
>> the effort is currently frozen. However, you are more than welcome to
>> pick it up and we can help you get it into ITK. More information on
>> the patch submission process can be found here [1] and in the ITK
>> Software Guide.
>>
>> Thanks,
>> Matt
>>
>> [1]
>> https://insightsoftwareconsortium.github.io/ITKBarCamp-doc/CommunitySo
>> ftwareProcess/SubmitAPatchToGerrit/index.html
>>
>> On Wed, Mar 11, 2015 at 4:07 PM, Jian Cheng <jian.cheng.1983 at gmail.com> wrote:
>>> Hi,
>>>
>>> My task using ITK has intensive matrix-matrix product, pseudo-inverse, etc.
>>> Thus the performance is actually mainly determined by the matrix
>>> library I used.
>>> Firstly I use vnl_matrix and vnl_vector in ITK. Then I found it is
>>> very inefficient because vnl matrix lib does not use blas and lapack.
>>> After I wrote my own matrix class which uses openblas and lapack, I
>>> got a hug gain of performance.
>>>
>>> I found there is a proposal to improve the efficiency of numerical
>>> libraries in ITK.
>>> http://www.itk.org/Wiki/ITK/Release_4/Refactor_Numerical_Libraries
>>> I am not sure how is the progress of the proposal.
>>> I wonder when the vnl matrix lib can internally support blas and
>>> lapack, or mkl, so that we can just use it without lose of the efficiency.
>>> Thanks.
>>>
>>> best,
>>> Jian Cheng
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://kitware.com/products/protraining.php
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/insight-developers
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-developers
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-developers
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers
More information about the Community
mailing list