On May 11, 2005, at 3:37 PM, Stephan Mertens wrote:
> The lack of asynchronous transport for larger messages leads to the
> following (somewhat bizzare) situation. Take a process that is sending
> messages with a low frequency, say one message every minute (hour,
> day, ...),
> to a receiver that is permanently looping over MPI_Recv.
> If you use buffered send and if the
> message size exceeds the short protocol limit, no message is ever
> delivered and you will eventually ran out of buffer space. Try it!
I assume you're using some flavor of BSEND, right?
First: don't use BSEND. It's a bad idea. It forces the MPI to make an
extra copy of your data, and simply adds latency. Problems like this
are yet another reason not to use BSEND. :-)
Second: even if you do use BSEND, it should trigger at least some
progress every time you invoke BSEND (or most any other communication
MPI function). So you'd have to hit the sweet spot of exhausting your
attached buffer space -- which, I'm guessing, if they're long messages,
is for any attached buffer size that is less than 2 messages (plus
overhead) long...?
--
{+} Jeff Squyres
{+} jsquyres_at_[hidden]
{+} http://www.lam-mpi.org/
|