Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] multi-threaded programming
From: Eugene Loh (eugene.loh_at_[hidden])
Date: 2011-03-08 14:17:39

Durga Choudhury wrote:
A follow-up question (and pardon if this sounds stupid) is this:

If I want to make my process multithreaded, BUT only one thread has
anything to do with MPI (for example, using OpenMP inside MPI), then
the results will be correct EVEN IF #1 or #2 of Eugene holds true. Is
this correct?

I believe this is thoroughly covered by the standard (though I suppose the same could have been said about my question).

In any case, for your situation, initialize MPI with MPI_Init_thread().  Ask for thread level MPI_THREAD_FUNNELED and check that that level is provided.  That should cover your case.  See the man page for MPI_Init_thread().  My question should not have anything to do with your case.
On Tue, Mar 8, 2011 at 12:34 PM, Eugene Loh <> wrote:
Let's say you have multi-threaded MPI processes, you request
MPI_THREAD_MULTIPLE and get MPI_THREAD_MULTIPLE, and you use the self,sm,tcp
BTLs (which have some degree of threading support).  Is it okay to have an
[MPI_Isend|MPI_Irecv] on one thread be completed by an MPI_Wait on another
thread?  I'm assuming some sort of synchronization and memory barrier/flush
in between to protect against funny race conditions.

If it makes things any easier on you, we can do this multiple-choice style:

1)  Forbidden by the MPI standard.
2)  Not forbidden by the MPI standard, but will not work with OMPI (not even
with the BTLs that claim to be multi-threaded).
3)  Works well with OMPI (provided you use a BTL that's multi-threaded).

It's looking like #2 to me, but I'm not sure.
users mailing list


users mailing list