Newsgroups: comp.parallel.mpi
From: gdburns@osc.edu (Greg Burns)
Subject: Re: MPI scalability and flow control
Organization: Ohio Supercomputer Center
Date: 17 May 1995 21:22:59 -0400
Message-ID: <3pe7hj$og6@tbag.osc.edu>

In article <3pcuuq$jnf@bone.think.com> bay@think.com (Paul Bay) writes:

> I have some questions about scalability and flow control in MPI.

We are also interested in that topic.  You sound like an implementor.

> If a receiver gets one of these small messages before a
> matching receive has been posted, must it buffer the message until the
> receive is posted, or is the program erroneous?

The program is erroneous if the message was generated by ready send
and there is not already a matching receiver.  Ready send messages
are immediately consummable and an implementation can use that fact
to make optimizations.

Ignoring the special nature of ready mode, consider your questions
in light of standard or buffered mode.

> Even if the synchronous send protocol is always used, receivers must have
> space to hold unmatched request-to-send messages.  How many unmatched
> request-to-send messages may arrive at a receiver before MPI's buffer
> space is exhausted?  

MPI tries to stay away from suggesting underlying buffering policy and
protocol designs.  However, you do have to meet the spec behaviour.
"MPI's buffer space" is better stated as "an MPI implementation's
buffer space".

You should not blindly send anything, even message envelopes (aka your
"request-to-send" messages) to anyone off-node.  The suggestion to
send short standard messages as in ready mode is unwise.  Filling up buffers
should have a throttling effect on the standard sender.  When a standard
send message can't be buffered or received, it is supposed to block.

Some type of acknowledgement protocol is needed to protect the buffers.
Acks could range from physical layer wires to transport layer messages.
MPI provides other guaranteed semantics for message-passing that
affect how buffers are protected and tend to eliminate the more
primitive solutions.

Notwithstanding all of the above, there is a RESCUE--> handle
on MPI called "Resource Limitations" that could be used for legal
abort when you run out of storage for request-to-send messages,
for example.

-=-
Greg Burns				gdburns@tbag.osc.edu
Ohio Supercomputer Center		http://www.osc.edu/lam.html

