From: [email-masked] (John Kapenga)
Date: Fri, 5 Feb 93 08:17:03 EST

hi;
A good offline note to me from 
> From: Alan Mainwaring <[email-masked]>
together with some other recent posts, indicates that we are using
at least two valid but very different meanings for the term "overlappping
communication and computation".
--------
1) Overlapping IO and computation means transfers from the communication
   processor to and from the node's computation processor memory are
   carried out by the node's memory system system while a computation is
   actively running on the node.

2) Overlapping IO and computation means receives and sends requests in a
   process may be pending while a computation is actively running in a
   process. 
-------- 
Note 2) does not require 1) , some ways 2) could (has) been provided:
   2) could be cone by 1)
   2) could be done by the OS while the unknowing computation process is
	interupted and placed in a wait state by the OS when it wants to
	prefrom a transfer.
   2) could be done when the computation process makes any system call.
--------
I believe MPI must have 2), that is non-blocking sends and receives. I
also think it would pass any straw vote by the widest of margins,

I do not have any real feeling about how important 1) currently is. I would
expect 1) could become an issue if communications become fast enough to
really support distributed virtual memory (that is, commmunication speed
approaches computation speed). Then much finer grained parallelism can be
applied.

It would seem that most interfaces that support direct transfers into memory,
rather than a buffer (iovec, stride etc.), could logically also well support
2), if the hardware provides it. It would be best if the interface specifed
could use 2) if available, without extra complication.

cheers - john