This is a very different way of looking at the problem, and it might just be
the proper one. So let's throw it around a bit..
As an aside, consider the history of the 1sided chapter. Originally it was
truly 1sided; you called mpi_put, for example, and the bits magically went
where you wanted them to. But this caused cache problems on some machines, and
so now we're considering adding the window_in and window_out functions. So the
"1sided" label is in danger of being obsolete anyway. We think that maybe we
can get away with doing this because of the observation that at some point, the
remote machine is always going know when it is about to access this goofy sort
of data buffer anyway. So the CDS1 model could very well be the next logical
extention of that.
> So, to answer your specific question, the buffer (i.e. "region" in CDS1) *is*
> the unit of transfer. If you want to transfer parts of a buffer, then you
> make each part a separate buffer. Each CDS1 comm cell can hold one element
of
> an array, or an entire array, so the unit of transfer is up to the user.
Can different comm sells contain overlapping buffers? For example, can I have
one comm cell that contains an entire array and then create smaller comm cells
for individual pieces of that same array?
> I don't know why you believe that more overhead would be needed than for
> standard message passing.
My concern was the overhead relative to a PUT, actually.
> CDS1 allows both "push" and "pull". If the process puts a region into a cell
> in another process, and that process gets the region from the cell, it is a
> "push". If a process puts a region into a cell in its own process, and
another
> process gets the region from that cell, it is a "pull". Even on pulls, CDS1
> offers a very simple and portable mechanism similar to asynchronous receive
> to allow the pulling process to perform other work after requesting a region
> from a distant cell -- i.e. while incurring the latency of the request
> and the resultant data.
Okay, now you've got my attention. So the comm cells, while globally visible,
are still associated with a particular "owner" process? If so, then I might be
willing to believe that the performace issues can be/have been solved nicely.
Let's cut to the bottom line: Does CDS1 provide the same degree of
functionality as a shared buffer with release consistency?
-- Eric Salo Silicon Graphics Inc. "Do you know what the (415)933-2998 2011 N. Shoreline Blvd, 7L-802 last Xon said, just salo@sgi.com Mountain View, CA 94043-1389 before he died?"