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