[Insight-developers] how can I verify that my code runs on several processors ?

Luis Ibanez luis.ibanez at kitware.com
Tue Nov 29 10:03:35 EST 2005


Hi Gaetan,

Are you using a very recent CVS version of ITK ?

TimeProbes in Windows previously returned only a time
with precision of milliseconds, because they used to
use clock() inside.

Recently (last week) the TimeProbes started using
the itk::RealTimeClock internally, which should give
your precision of microseconds. Note that this only
refers to the resolution of the clock, not its accuracy.

---

About your question regarding threads, it all depends
on the place where yuo put the TimeProbe and when you
invoke its Start() and Stop() methods.

If you created the TimeProbe and Started it before
spawning the threads, and stopped it after joining
the threads, then you will get the "wall-time" that
it took to run the threads. This is *not* the sum
of time for thread1 + thread2 + thread3... , but
rather the Max of the time used by each thread.



It will be useful if you post your code...


This will make this conversation less esoteric...



BTW, What operating system are you using ?




Thanks



    Luis



---------------------
Gaetan Lehmann wrote:
> 
> I'm thinking to something which could explain the result I get: I use  
> TimeProbe to measure the execution time. TimeProbe give the CPU time 
> which  is better than the real time, but what is its behavior with 
> several  processors ? Does is add the time spent on all the processors 
> used ?
> 
> On Tue, 29 Nov 2005 15:26:41 +0100, Gaetan Lehmann  
> <gaetan.lehmann at jouy.inra.fr> wrote:
> 
>>
>> The server contains 4 xeons with hyperthreading activated.
>> The hyperthreading is a part of my problem: I don't know how I can be  
>> sure that 2 threads are not running on the same processor. I see 8  
>> processors, and I don't know how the CPU numbers are given, so I 
>> can't  be sure my thread are not running on the same real CPU.
>>
>> But I'm not sure that the lone problem: I get worst and worst  
>> performance when I increase the number of threads (up to 4) - it 
>> seems  very similar to what I get on a single processor system. I 
>> think I  should get a (small) increase of performance when the number 
>> of thread  increase
>>
>> On Mon, 28 Nov 2005 16:24:52 +0100, Kent Williams  
>> <norman-k-williams at uiowa.edu> wrote:
>>
>>> I don't know what processors your server contains, but it's not 
>>> always  the case that multithreading increases performance.  Intel 
>>> HT  processors in particular have problems with too many shared 
>>> resources  between the computation units.  The following article 
>>> indicates that  SQL Server and Citrix Terminal Server both perform 
>>> better with  hyperthreading disabled.
>>>
>>> http://news.zdnet.co.uk/0,39020330,39237341,00.htm
>>>
>>> I don't know how you can verify that your threads are being spread  
>>> across different processors on your server -- perhaps someone else 
>>> here  does.   ITK's threading model generally works very well, but 
>>> there may  be cases where it does not.  For some cases -- 
>>> particularly short,  simple ITK pipelines -- threading has minimal 
>>> positive, and possibly  negative impact on performance.
>>>
>>> Gaetan Lehmann wrote:
>>>
>>>>
>>>> Hi,
>>>>
>>>> I'm trying to measure the performances of the filter I'm writing on 
>>>> a   server with 4 processors. I'm quite surprise to see that using  
>>>> several  threads seem to decrease the performances, as it do on a 
>>>> host  with a  single processor.
>>>> How can I verify that the different threads are running on several   
>>>> processors ? It's not fully related to ITK, but I hope someone will  
>>>> be  able to answer that question on this list :-)
>>>>
>>>> I'm running my tests on linux.
>>>>
>>>> Thanks,
>>>>
>>>> Gaetan
>>>>
>>>>
>>>
>>
>>
>>
> 
> 
> 



More information about the Insight-developers mailing list