Newsgroups: comp.parallel.mpi
From: bay@think.com (Paul Bay)
Subject: MPI scalability and flow control
Organization: Thinking Machines Corporation, Cambridge MA, USA
Date: 17 May 1995 13:50:18 GMT
Message-ID: <3pcuuq$jnf@bone.think.com>

Hi folks,
I have some questions about scalability and flow control in MPI.

Near the end of section 3.4 of the MPI standard is some 
advice regarding the implementation of various modes of 'send'
functions (top of page 29 in my edition):

To implement a 'ready send', the message is sent as soon as possible.

To implement a 'synchronous send', the sender sends a request-to-send; the
receiver stores this request; when the matching MPI_receive operation is
posted, the receiver sends back a clear-to-send message, and the sender
then sends the actual message.

To implement a 'standard send', use the first protocol for short messages
and the second protocol for long messages.


These remarks are only advice, not actually part of the standard, but I am
troubled by them nevertheless.  As I understand it, for a 'ready send', the
message goes out on the wire without any handshake with the receiver.  In
the public domain implementations of MPI_Send, is there a message size
below which this 'ready send' protocol is used?  If so what is the
threshold?  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?  If it must buffer the
message, how many such unexpected small messages may arrive at a receiver
before MPI's buffer space is exhausted?

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?  

What happens to additional messages that arrive after the buffer
space is exhausted?

-Paul Bay
bay@think.com

