Hello Jeff and MPI Users,

Yes, I know about the ISends. I do not want to have ISends for other reasons.

The problem that bothers me is that I have one process waiting on MPI_Recv(...) and the other process on MPI_Ssend(...), but still both are blocked.

This happens arbitrarily. At other times, these calls go through perfectly.

Also, I read the definition of MPI_Ssend(...) that you sent, but then it does not explain why both MPI_Ssend(...) and MPI_Recv(...) are blocked seemingly forever.

I notice that such a block happens when MPI_Recv(...) is posted before MPI_Ssend(...).

Any ideas?

Thanks for your input already.



From: Jeff Squyres <jsquyres@cisco.com>
To: devendra rai <rai.devendra@yahoo.co.uk>; Open MPI Users <
Sent: Tuesday, 13 September 2011, 13:16
Subject: Re: [OMPI users] Question on MPI_Ssend

On Sep 13, 2011, at 5:02 AM, devendra rai wrote:

> I am using MPI_Ssend and a corresponding a MPI_Recv. I notice that whenever MPI_Recv starts waiting firs, and then MPI_Ssend is posted, the MPI calls just block. This, of course results in non-coherent application behavior.

I'm not sure what you mean by "non-coherent application behavior."

Note that MPI_SSEND is a synchronous send, which, by definition, means that it won't complete until the matching receive has been posted.  In practice, this usually means that the receiver has started to receive (and sent an ACK back to the sender). 

If you want non-blocking behavior, you might want to investigate MPI_ISEND and MPI_IRECV.

Jeff Squyres
For corporate legal information go to: