Hi, 

I am trying to port an existing PVM-based application (developed over many 
years) onto MPI, trying to preserve as much of the organization as possible. 
This is my first contact with MPI, after years of working with PVM.

In my PVM implementation, after doing sends (e.g. pvm_send, pvm_mcast) the 
master continues running (doing its own work), regardless of whether workers 
have actually downloaded the corresponding messages. I need to keep this model. 

When I do a send with MPI_Bcast, master can't do any more work until workers 
have downloaded the messages (i.e. there is no return from MPI_Bcast). Likewise 
with MPI_Send. 

When I do a send with MPI_Ibcast, master can continue doing work, as expected, 
BUT workers never receive their messages. I tried MPI_Ibcast on workers, which 
never succeeds (i.e. as written to last argument, MPI_Request *). I also tried 
MPI_Bcast on the workers to match the MPI_Ibcast from the parent, but this 
blocks and never returns. I have tried with MPI_Probe on the workers, but this 
doesn't ever work, either --message never arrives. Doing a repeated check (with 
MPI_Test) on master of whether workers downloaded message makes them receive 
it, but if I do this, master can't continue doing any work until workers got 
their messages! 

In summary, I need master to do a send and continue doing computations right 
away, and I need (of course) the workers to get their messages. 

This works almost transparently in PVM.  Is there a way to emulate that in MPI? 
 Am I doing something wrong?     

--Pablo Goloboff









Reply via email to