[Insight-developers] question for itk pipeline expert

Karthik Krishnan Karthik.Krishnan at kitware.com
Thu Dec 8 10:55:33 EST 2005


|
|||
Gaetan Lehmann wrote:

>
> Hi Luis,
>
> Yes, I can go this way, but:
> - If the execution time can be integrated in the filter (we accept to 
> have  a new attribute in the filter), then it should be implemented in 
> a common  class of all filters, so the execution time of all filters 
> can be measured  without having to duplicate code.

|
It should be possible to define a macro that can be #defined via CMake 
and collects times taken by GenerateData methods of filters via a 
TimeProbesCollector. I don't know if a lot of people need this 
functionality, but if that's so it should be easy to add. There are 
classes for this purpose already. I guess they just need to be hooked 
into appropriate places.

regards
karthik

|

> - If the execution can't be integrated in the filter (because we 
> don't  want of another attribute), then I will have to remove/comment 
> the  corresponding code before submitting the filter, and so measure 
> will be  hard to reproduce
> - There is really a problem that I can't locate, and which make ITK 
> use a  significant amount of time. It should be fixed :-)
>
> Gaetan
>
> On Thu, 08 Dec 2005 13:26:39 +0100, Luis Ibanez 
> <luis.ibanez at kitware.com>  wrote:
>
>>
>> Hi Gaetan,
>>
>>
>>      Gaetan Lehmann wrote:
>>
>>      > how can I evaluate the performance of the
>>      > filters in that situation ?
>>
>>
>>
>>     Enjoy the Power of Open Source !
>>
>>
>>
>>     Go to the source code of the filter that you
>>     want to profile and add a TimeProbe as a member
>>     variable.
>>
>>     If the filter is not threaded, simply Start the
>>     TimeProbe at the beginning of the GenerateData()
>>     method, and Stop it at the end of the same method.
>>
>>     If the filer is threaded, Start() the TimeProbe in
>>     the "BeforeThreadedGenerateData()" method and
>>     Stop() the TimeProbe in the "AfterThreadedGenerateData()"
>>     method.
>>
>>
>>
>>     If you want to force the filters to re-execute,
>>     multiple times in order to have better statistics,
>>     then you can invoke the "Modified()" method on them
>>     before calling "Update()".
>>
>>
>>     Add a Get method to the filter in order to gain
>>     access to the probe, so when you are done running
>>     the filters you can invoke from outside the filter
>>     the report of the Time Probe.  At that point, pay
>>     particular attention at the report on "Number of
>>     Starts" and "Number of Stops", since that will
>>     tell you how many times the "Generate Data" method
>>     was executed.
>>
>>
>>        Regards
>>
>>
>>
>>         Luis
>>
>>
>> ----------------------
>> Gaetan Lehmann wrote:
>>
>>>  Hi Bill,
>>>  No, there is no ReleaseDataFlagOn() in the filters used.
>>> I have displayed the progress of all the filters to verify that 
>>> they  are  not reexecuted if they shouldn't, and everything looks 
>>> nice (but  the  timing are still not what they should).
>>> It's a major problem for me: how can I evaluate the performance of 
>>> the   filters in that situation ?
>>>  Gaetan
>>>  On Wed, 07 Dec 2005 21:12:55 +0100, Bill Lorensen  
>>> <wlorens1 at nycap.rr.com>  wrote:
>>>
>>>> Are you using ReleaseDataFlagOn in any of your filters. Perhaps   
>>>> something is re-executing.
>>>>
>>>> Bill
>>>>
>>>> At 07:42 AM 12/7/2005, Gaetan Lehmann wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to measure the execution time of a new filter.
>>>>> It's done with
>>>>> http://voxel.jouy.inra.fr/darcs/contrib-itk/regionalExtrema/perf3D.cxx 
>>>>>
>>>>> Here are the results I get:
>>>>>
>>>>> [glehmann at marvin build]$ ./perf3D ../ESCells.img
>>>>> #F      concave vrmin   rmin
>>>>> 0       17.874  2.592   1.74
>>>>> 1       21.022  3.613   2.799
>>>>>
>>>>> There is a problem: rmin is a sequence of filters which include  
>>>>> vrmin,  and
>>>>> so rmin should take more time than vrmin.
>>>>> Now, if I comment rmin measure and update, I get
>>>>>
>>>>> [glehmann at marvin build]$ ./perf3D ../ESCells.img
>>>>> #F      concave vrmin   rmin
>>>>> 0       17.578  0       2.614
>>>>> 1       21.276  0       3.722
>>>>>
>>>>> Again, there is something wrong: I should get the same value than  
>>>>> before
>>>>> for rmin if vrmin is not updated.
>>>>>
>>>>> I think there is something hidden in the execution of the 
>>>>> pipeline,  but  I
>>>>> can't get what.
>>>>> Can someone look at the code above and tell me what I'm doing wrong ?
>>>>>
>>>>> I'm using ITK 2.4.1, cmake 2.2.2 and gcc 4.0.1
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Gaetan
>>>>>
>>>>> -- Gaëtan Lehmann
>>>>> Biologie du Développement et de la Reproduction
>>>>> INRA de Jouy-en-Josas (France)
>>>>> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
>>>>> http://voxel.jouy.inra.fr
>>>>> _______________________________________________
>>>>> Insight-developers mailing list
>>>>> Insight-developers at itk.org
>>>>> http://www.itk.org/mailman/listinfo/insight-developers
>>>>
>>>>
>>>>
>>>
>>
>
>
>


More information about the Insight-developers mailing list