[Insight-developers] Cygwin and Multiple processors

Bill Hoffman bill.hoffman@kitware.com
Wed, 15 Aug 2001 13:41:20 -0400


I have checked in a fix for this.
It requires a new cmake, and to remove the CMAKE_USE_PTHREADS from an
existing CMakeCache.txt file.   However, if you build from scratch,
it should do the right thing.

I am not sure about the crash for > 2, I could not reproduce that.
It does not correctly start with 2 as the default.


-Bill


At 05:48 PM 8/14/2001 -0700, Lydia Ng wrote:
>Here is an update on the Cygwin/multi-processor issue
>on my two-proc machine:
>
>1) I forced the use of pthread by modifying CMakeCache.txt
>
>//Use the pthreads library
>CMAKE_USE_PTHREADS:BOOL=1
>
>By default, it uses the win32 library
>
>
>2) Everything compiles fine. However, itkMultiThreader wasn't
>able to work out the number of processor - so the default number
>of threads was set to 1.
>Test will build and run but just not multi-thread.
>
>
>3) To test the multi-threading, I added 
>
>  itk::MultiThreader::SetGlobalDefaultNumberOfThreads(2);
>
>to one of the failing test. It compiled, ran and passed.
>When I set the number of threads to greater than 2
>then I segmentation violation errors.
>
>
>So, it would be nice if CMake was able to detect that 
>a Cygwin-gcc build and use pthread by default.
>itkMultiThreader needs to be modified to so it can
>work out the number of processors somehow ....
>
>
>Cheers,
>Lydia
>
>
>> -----Original Message-----
>> From: insight-developers-admin@public.kitware.com
>> [mailto:insight-developers-admin@public.kitware.com]On Behalf 
>> Of Miller,
>> James V (CRD)
>> Sent: Friday, July 27, 2001 5:51 PM
>> To: 'insight-developers@public.kitware.com'
>> Subject: [Insight-developers] Cygwin and Multiple processors
>> 
>> 
>> I did a little investigation on the problem with cygwin and 
>> multiple processor machines.  My original
>> thought was that itk::MultiThreader did not work under 
>> cygwin.  However, on a single processor
>> machine I added a line to one of the tests that is failing on 
>> multiple processor systems.
>> 
>> itk::MultiThreader::SetGlobalDefaultNumberOfThreads(4);
>> 
>> Running the modified test, 4 threads are created and the test 
>> passed.  So the problem in creating and
>> destroying threads.  
>> 
>> Rather, it appears as though the problem is in running 
>> threads on multiple processors. This is
>> something that I will not be able to check into further until 
>> I get back from vacation.
>> 
>> The documentation on cygwin and pthreads is rather spotty.  
>> Most pages found by google simply state
>> that pthread support is experimental.
>> 
>> Lydia, if you are looking for something to try: 
>> itkMultiThreader.cxx has a number of calls to
>> pthread_attr_setscope().  But these calls are all bypassed 
>> (ifdef'd out) if we are running under
>> Win32.  You might want to enable these calls (there are 
>> several of them in the MultiThreader.cxx
>> code).  Perhaps we need them for pthread on cygwin but not 
>> for pthreads on standard win32.
>> 
>> I'll be back in the office a week from Monday (maybe Tuesday, 
>> maybe Wednesday).
>> 
>> Jim
>> 
>> 
>> _______________________________________________
>> Insight-developers mailing list
>> Insight-developers@public.kitware.com
>> http://public.kitware.com/mailman/listinfo/insight-developers
>
>_______________________________________________
>Insight-developers mailing list
>Insight-developers@public.kitware.com
>http://public.kitware.com/mailman/listinfo/insight-developers