Subject: receiver-ready send, opinion

From: [email-masked]
Date: Thu, 8 Apr 93 16:39:16 PDT

I confess to having conflicting opinions about receiver-ready send.

On the one hand, I like it a lot because it runs faster on some
machines and it isn't much harder to use than regular send.  If it's
guaranteed safe with no extra sync, then I just use it.  Otherwise I
write adaptive codes that figure out whether to use it or not based on
the message length.  That strategy ports fine to systems where
receiver-ready send doesn't help.

On the other hand, I don't like the concept as it appears in MPI.
I see the basic issue as

  Should MPI support a variety of protocols with different
  performance characteristics?

In the specific case of receiver-ready send, we (the MPI committee)
have answered "yes".

But in the general case, we have answered "no" by specifying that
any form of send can match with any form of receive.

For example, an MPI implementation effectively can't use a "two-trip
receiver pulls" (2TRP) protocol for exact-match messages, even though
this would naturally handle many of the situations for which I now use
receiver-ready send.  This is because under the MPI spec, the sender
doesn't know whether the receiver is going to do exact-match or
wildcard, and using 2TRP with wildcard receive would be prohibitively
expensive.

It's true that the semantics of receiver-ready send allows MPI to use
a more efficient protocol.  But I suspect that an even greater
improvement could be obtained if we required matching of send and
receive modes, which we already voted is not acceptable.

Perhaps receiver-ready send is just one of those borderline
questions that won't be resolved except by some random process like
flipping a coin or taking an MPI vote in the afternoon.

--Rik

----------------------------------------------------------------------
[email-masked] (alias 'd39135')   Rik Littlefield
Tel: 509-375-3927                         Pacific Northwest Lab, MS K1-87
Fax: 509-375-6631                         P.O.Box 999, Richland, WA  99352

---

From: [email-masked] (Steve Huss-Lederman)
Date: Fri, 9 Apr 93 12:24:06 EDT

I agree with Rik's comments that the performance does vary with the
circumstance that you use forced type on the Delta.  I mostly wrote
that code to check Lyndon's question of the performance difference in
a blocking receive vs. a non-blocking receive followed by a wait.  It
was not great.  So it often comes down to (as Rik noted) the point
that ready receive requires user skill if you want to be sure you get
better performance and this will not easily port to other machines in
many circumstances.  The flip side is that "us" performance seekers
want the extra performance and have routinely been willing to pay for
it in more complex code.  We do lots of ifs on message size, type of
communication, etc. if we want optimal performance.

I have concerns about typical users and ready receive.  I have even
thought about only making it available with message buffers but this
may reduce performance.  I would like to see ready receive but would
be pleased by a better overall proposal on how to fit it into MPI.

Steve