Both cases should work just fine. In fact as long as there is only one execution flow using MPI functions, the user will not face any problems.

In a non-threaded build, there is no real progress outside the MPI calls. Here by real progress I understand MPI request progress, something that is visible from the user level (such as request completion).

If a blocking send is used, and the length of the data is under the eager limit, the message will stay in the network until the receiver access some MPI function. However, in this case the sender is free to continue its execution. In the case where the length exceed the eager size, the sender will be blocked until the corresponding receive is posted (and then the rendez-vous protocol completed and data transmitted).

  george.

On Jan 12, 2008, at 9:16 PM, Brock Palen wrote:

Hey guys,
I know that threading is very immature (or broken) in the 1.2
series,  But what happens if a user wants to use a threaded BLAS
(GOTO) library with their MPI code and never has OpenMP/pthreads
parallel regions with MPI calls?  Would this work?

What about using OpenMP in their code but again all MPI calls happen
outside parallel regions.  How would a process who is behind in
execution handle a incoming message when it has not yet hit outside
the threaded region ware the MPI_Recv() is called?  Would the library
just hold on to it (if below the eager limit) and wait until someone
calls the Recv that matches the message?


Brock Palen
Center for Advanced Computing
bro...@umich.edu
(734)936-1985


_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to