[ITK-users] Mini-pipeline filters don't obey SetNumberOfThreads()
    Joël Schaerer 
    joel.schaerer at laposte.net
       
    Thu Nov  6 05:47:49 EST 2014
    
    
  
Hi all,
I have noticed that a few filters don't give exactly the same output 
depending on the number of threads they are run with. While this is 
unlikely to change results in a meaningful way, it makes things more 
difficult to test and debug since results vary from machine to machine. 
I unfortunately don't have the time to dig deeper into this, but I know 
that the MattesMutualInformationMetric has this problem, and I suspect 
either the NormalizeImageFilter or the MultiResolutionImagePyramid to 
have it too.
This brings me to the second problem, which is that forcing the number 
of threads on mini-pipeline filters such as the NormalizeImageFilter 
doesn't work. That is, calling normalize_filter->SetNumberOfThreads(1) 
doesn't work as expected. The reason is actually pretty simple: the 
filter simply does not pass the information to the filters inside the 
mini-pipeline. I believe most other mini-pipeline filters will have the 
same problem.
Since the mini-pipeline filters are not accessible from outside the 
class, I am left with using 
itk::MultiThreader::SetGlobalMaximumNumberOfThreads which is of course 
not very satisfactory.
I don't see how to fix the problem without calling SetNumberOfThreads on 
each mini-pipline filter... Hopefully someone will have a better idea!
Joel
    
    
More information about the Insight-users
mailing list