On 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).

I believe the current answer is #2, but it would be great if the answer could 
change to be a variant of #3:

3) Works well with OMPI (provided you use a BTL that's safe to use with 
MPI_THREAD_MULTIPLE)

(i.e., the BTL doesn't have to be multi-threaded, itself)

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to