LAM/MPI logo

LAM/MPI Development Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2005-12-13 20:23:16


On Dec 13, 2005, at 6:07 AM, Samuel Richard wrote:

> I wonder who is in charge of buffering a received message when no
> Recv has been posted yet ?
> Is it a thread ?
> or is my mpi program interrupted?
> or is it handled by the kernel?

It depends on the RPI that you're talking about. For example, with
TCP sockets, both the sender and receiver's kernels will buffer
data. Other devices have some measure of buffering as well, but in
differing forms. GM, for example, has an event queue that
effectively "receives" when we poll the queue for progress. But
until we poll, the gm kernel driver and/or user-level library may be
buffering the data.

LAM/MPI itself also does some buffering. When unexpected messages
arrive (i.e., when a message is received and no matching MPI receive
has been posted), LAM will typically receive the whole message if
it's small enough ("small enough" is defined differently for each
RPI). For large messages (i.e., anything larger than "small
enough"), we do a rendezvous protocol so that only the header is sent
to the receiver. The actual message is not sent until the matching
receive is posted.

Does that help?

--
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/