Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] How to check if Send was made or not before performing a recv
From: Eugene Loh (eugene.loh_at_[hidden])
Date: 2010-12-12 01:18:59


Alaukik Aggarwal wrote:

>Thanks for your reply. I used this to solve the problem.
>
>But I think there should be an in-built construct for this.
>
>
What would such a construct look like? If you need information from the
remote processes, they need to send messages (in the two-sided model).
If you want to time out after a while, you can have MPI_Iprobe() checks
for in-coming messages and then give up after some period of time. I
just don't know what you'd be looking for.

If you have concrete ideas you would really want, you should address
them to the MPI Forum, which is in charge of defining MPI calls.

>On Sat, Dec 11, 2010 at 10:28 AM, Eugene Loh <eugene.loh_at_[hidden]> wrote:
>
>
>>Alaukik Aggarwal wrote:
>>
>>
>>>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]
>>>
>>>