MPI - Will it cause any problems if a message sent by MPI_Bcast() is not received in one of the nodes (doesn't call MPI_Bcast) -
i have master node broadcasts message every using mpi_bcast. problem is, have 1 specific node needs run bit slower others, , say, participate in bcast half of time. like:
// -- iteration 1 master: mpi_bcast(msg1) node1: mpi_bcast(msg1) node2: mpi_bcast(msg1) node0: mpi_bcast(msg1) // -- iteration 2 master: mpi_bcast(msg2) node1: mpi_bcast(msg2) node2: mpi_bcast(msg2) node0: dosomethingimportantanddontparticipateinbcast() // -- iteration 3 master: mpi_bcast(msg3) node1: mpi_bcast(msg3) node2: mpi_bcast(msg3) node0: mpi_bcast(msg3)
is possible? note in last iteration, want node0 receive msg3 , not msg2 (which ignored).
your suggested pattern won't work, processes in communicator participate in each broadcast.
if implement plan stands find node0
matches mpi_bcast(msg3)
broadcast other processes see mpi_bcast(msg2)
. there no mechanism identifying broadcasts separately. it's long time since wrote mpi program mis-matched broadcasts can't recall happens, , i'm not sure standard requires. expect bad things happen, possibly processes have participated in more broadcasts special 1 grind halt wait.
what define intracommunicator, using mpi_comm_create
, excludes node0
, call broadcasts on both global communicator , new 1 wish.
Comments
Post a Comment