Alaukik Aggarwal wrote:

Hi,

I am using Open MPI 1.4.3.

I have to perform a receive operation from processes that are sending
data. It might happen that some of the processes don't send data
(might have completed in-fact).

So, how do I perform check on which processes to receive data from and
which processes to skip?

[code]
if(id != master)
       MPI::COMM_WORLD.Send(&dist, NUM_VERTEX, MPI_LONG, master, 1234);
if(id == master)
{
       for(int eachId = 1; eachId<procs ; eachId++)
       MPI::COMM_WORLD.Recv(&dist1, NUM_VERTEX, MPI_LONG, eachId, 1234);
}
[/code]
One option is to have each non-master process send a "forget about me" message. In practice, what this means is that every non-master process does, in fact, send a message, with that message either containing data or an indication that there is no data to send.

Reply via email to