MPI_THREAD_MULITPLE is "somewhat" supported, meaning that support for it was designed in to Open MPI, but it has not been fully stress tested.  As such, there is likely to still be bugs when using multiple user threads with MPI_THREAD_MULTIPLE.
fork() is not technically supported by the MPI standard.  If you *need* to fork(), you might want to look at alternate mechanisms if you need to move between multiple MPI implementations because support for it is not likely to be portable.
Within Open MPI, fork() will almost certainly fail if you use the OS-bypass networks (Myrinet, InfiniBand).  The mechanisms that these networks use for high-speed/low latency are quite problematic with fork().  If you are using tcp or shared memory, fork() *might* work, but this is not something that we have extensively tested.

From: [] On Behalf Of imran shaik
Sent: Friday, May 26, 2006 1:50 AM
To: openMPI mailing list
Subject: [OMPI users] Thread Safety

I am a newbie to OpenMPI.
Can anyone say how the support for MPI_THREAD_MULTIPLE is implemented in openMPI?

Is thread safety completely provided in openMPI? or does it still has some bugs?
I am currently using LAM/MPI.But i need concurrent threads making MPI calls. So i am planning to move to another implementation of MPI. Can i choose openMPI?

Also, is "fork"(for child preoces creation) still a no-no in  openMPI too?  Can a child process(forked) make concurrent MPI calls along with its parent ?

Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around