[Insight-users] How to reduce the compilation time

Ariel Hernán Curiale curiale at gmail.com
Mon Mar 11 12:56:29 EDT 2013


Hi,

Thanks to all for your comments. I decided to create a new project with only one optimizer and one metric for one pixel type and dimension to test an custom some parameters.

New comments are well received.
Thank a lot.
__________________________________
| Ariel Hernán Curiale Ph.D Student
| ETSI Telecomunicación
| Universidad de Valladolid
| Campus Miguel Delibes
| 47011 Valladolid, Spain
| Phone: 983-423000 ext. 5590
| Web: www.curiale.com.ar
|_________________________________

El 11/03/2013, a las 16:25, Tim Allman escribió:

> I agree with all of the suggestions given but I think that it's worth mentioning that templated C++ code requires much more processing than non-templated code, partly because you can't hide anything in .cpp files. Everything must be in headers. When the code is compiled a class is created for every every specific type (such as pixel type) and then these are compiled so it is easy to make very long compile times.
> 
> If I have been working with a piece of code and think that I have more headers included than I need, I comment out the whole block and then try to compile it. I then uncomment one by one only those necessary to allow the code to compile.
> 
> Tim
> 
> On 13-03-11 08:43 AM, Bradley Lowekamp wrote:
>> If you are gcc, you can look into "ccache" while it does not make the compilation go faster, it caches the output so when you compile again it doesn't have to do all the work. It really a huge help when you are moving between branches in a project like ITK or SimpleITK. I am not sure how much it'll help for your case.
>> 
>> Brad
>> 
>> 
>> On Mar 11, 2013, at 7:34 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>> 
>>> As you said, reduce the number of pixel types for development.
>>> 
>>> On Mon, Mar 11, 2013 at 4:21 AM, Ariel Hernán Curiale <curiale at gmail.com> wrote:
>>> Hi Saurabh,
>>> 
>>> Thanks four your tips. I'm using all the headers. I was thinking to use only one pixel type (for develop) with the hope to reduce the compiling time.
>>> 
>>> Thank again.
>>> __________________________________
>>> | Ariel Hernán Curiale Ph.D Student
>>> | ETSI Telecomunicación
>>> | Universidad de Valladolid
>>> | Campus Miguel Delibes
>>> | 47011 Valladolid, Spain
>>> | Phone: 983-423000 ext. 5590
>>> | Web: www.curiale.com.ar
>>> |_________________________________
>>> 
>>> El 11/03/2013, a las 00:50, Saurabh Garg escribió:
>>> 
>>>> Hi Ariel,
>>>>  
>>>> I had similar problem. There are couple of things you can do. Try to remove the ITK header files which you are not using anymore. As you mention, you are already compiling the modified files only. Try to split the code further over more files/modules, if you can. For Instance, I see, you are using different optimizers. Are you using all of them or testing the performance with different optimizer. In later case, I would protect the code with #ifdef and #endif, so that you can exclude the code/header files which you don't need for the current run.
>>>>  
>>>>  
>>>> HTH,
>>>> Saurabh
>>>> 
>>>> On Sun, Mar 10, 2013 at 2:31 PM, Ariel Hernán Curiale <curiale at gmail.com> wrote:
>>>> Hi,
>>>> . 
>>>> I'm looking for some tips about how can I reduce the compilation time. I created some libraries Metric1.a, Metric2.a, Metric3.a, BlockMatching.a and MyRegistration.a to compile just the modified code and not all of it.
>>>> 
>>>> In my code, I use this main class:
>>>> 
>>>> #include <itkSymmetricForcesDemonsRegistrationFilter.h>
>>>> #include <itkMultiResolutionPDEDeformableRegistration.h>
>>>> #include <itkBSplineInterpolateImageFunction.h>
>>>> #include <itkMultiResolutionImageRegistrationMethod.h>
>>>> #include <itkMultiResolutionPyramidImageFilter.h>
>>>> #include <itkBSplineTransform.h>
>>>> #include <itkRegularStepGradientDescentOptimizer.h>
>>>> #include <itkLBFGSBOptimizer.h>
>>>> #include <itkConjugateGradientOptimizer.h>
>>>> #include <itkLinearInterpolateImageFunction.h>
>>>> #include <itkInterpolateImageFunction.h>
>>>> #include <itkResampleImageFilter.h>
>>>> #include <itkRecursiveMultiResolutionPyramidImageFilter.h>
>>>> #include <itkCovariantVector.h>
>>>> #include <itkMeanSquaresImageToImageMetric.h>
>>>> #include <itkBinaryDilateImageFilter.h>
>>>> #include <itkResampleImageFilter.h>
>>>> #include <itkExtractImageFilter.h>
>>>> #include <itkWarpImageFilter.h>
>>>> #include <itkMultiResolutionPDEDeformableRegistration.h>
>>>> #include <itkRescaleIntensityImageFilter.h>
>>>> #include <itkBinaryThresholdImageFilter.h>
>>>> #include <itkImageRandomConstIteratorWithIndex.h>
>>>> 
>>>> Also, I work with different types of pixels in 2D, 3D and 4D:
>>>> unsigned char
>>>> char
>>>> unsigned short
>>>> short
>>>> unsigned int
>>>> int
>>>> unsigned long
>>>> long
>>>> float
>>>> double
>>>> 
>>>> 
>>>> The main problem is that the code takes too much time to compile (I use itk-4.3,  vtk-5.10 and gcc 4.2). If anyone could give me some tips about how can I reduce the compiling time it would be really useful.
>>>> 
>>>> In the CMakeList.txt I link the libraries and the main code with ${ITK_LIBRARIES} (I couldn't find the ITKRegistrationCommon library to use just this library).
>>>> 
>>>> Regards,
>>>> __________________________________
>>>> | Ariel Hernán Curiale Ph.D Student
>>>> | ETSI Telecomunicación
>>>> | Universidad de Valladolid
>>>> | Campus Miguel Delibes
>>>> | 47011 Valladolid, Spain
>>>> | Phone: 983-423000 ext. 5590
>>>> | Web: www.curiale.com.ar
>>>> |_________________________________
>>>> 
>>>> 
>>>> _____________________________________
>>>> 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://www.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://www.itk.org/mailman/listinfo/insight-users
>>>> 
>>>> 
>>> 
>>> 
>>> _____________________________________
>>> 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://www.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://www.itk.org/mailman/listinfo/insight-users
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Unpaid intern in BillsBasement at noware dot com
>>> _____________________________________
>>> 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://www.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://www.itk.org/mailman/listinfo/insight-users
>> 
>> 
>> 
>> _____________________________________
>> 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://www.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://www.itk.org/mailman/listinfo/insight-users
> 
> -- 
> Tim Allman, Ph.D.
> 35 Margaret Street,
> Guelph Ontario N1E 5R6
> Canada
> <dr_tim_allman.vcf>_____________________________________
> 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://www.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://www.itk.org/mailman/listinfo/insight-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130311/b00b59ee/attachment.htm>


More information about the Insight-users mailing list