more fun with proposals

Eric Salo (salo@mrjones.engr.sgi.com)
Wed, 10 Jul 1996 11:00:21 -0700

This is a rather odd situation - here we are with one official round of voting
already behind us, and suddenly we're up to our eyeballs in alternative
proposals, including one from the chapter author! I think that this is a good
thing, because it seems to me that we as a group are finally starting to sort
out the issues and understand them. As a result, we're coming up with simpler
and simpler models. So here's yet another simplification (most of which was
suggested several weeks ago to me by Mark Fallon):

Marc's alternate proposal does not disallow simultaneous PUTs to the same
window from multiple processes. So, what would be the consequences if it did? I
claim that we would then have a GET/PUT model which could be explained with a
few simple rules:

1) A "shared" window lock allows read access to that window, either locally
with a load or remotely with a GET.
2) An "exclusive" window lock allows both read and write access to that
window, either locally with a load/store or remotely with a get/put.
3) Attempts to access a window without first obtaining the appropriate lock
are erroneous.

And that's it! A few observations:

1) We no longer need to distinguish between global epochs and local epochs;
once you have the lock, you can do whatever you want to the window and the
semantics are well-defined.

2) We no longer need to overload MPI_Barrier() with additional coherency
logic.

3) Rolf points out that adding a lock to a window may block other processes.
However, it is already erroneous for multiple processes to PUT to overlapping
regions within a window. So if two processes wish to modify overlapping
regions, they will need some sort of mutual exclusion anyway. And if the
regions do not overlap, then the application can create a larger number of
smaller windows.

4) High-quality implementations can now detect erroneous GET/PUT calls by
checking internally to ensure that the proper locks have been obtained.

I believe that this model does a very nice job of providing a useful,
easy-to-understand abstraction which can be implemented both efficiently and
simply. I therefore propose that we add these stricter lock semantics to Marc's
alternate proposal.

-- 
Eric Salo         Silicon Graphics Inc.             "Do you know what the
(415)933-2998     2011 N. Shoreline Blvd, 8U-808     last Xon said, just
salo@sgi.com      Mountain View, CA   94043-1389     before he died?"