Re: CDS1

David C. DiNucci (dinucci@nas.nasa.gov)
Fri, 31 May 1996 16:02:54 -0700

> 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?

No.

> > 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.

Oh. Well, yes, the overhead of a write/enq in CDS1 may be more than an
unsynchronized PUT, but I have never been convinced that unsynchronized PUTs
are very useful. As my implementation now stands, transfering a region between
processes that share memory (i.e. writing to a cell in one process and reading
from the cell in another) takes about ~25microsecs on one node of an SGI Power
Challenge cluster (if I remember right), because each process must
*lock the comm cell
*alloc or dealloc comm-cell queue space for a pointer
*read or write the pointer to the region into that space, and
*unlock the cell.

There may be ways of making it faster (perhaps even much faster by using some
sort of atomic swap instruction to put a pointer into a cell), but it looks
like this may require restricting things a bit more -- e.g. requiring that
the user process declare the maximum number of regions which can be enqueued
into each "fast" comm cell and/or the number that can block while waiting to
read it. I think that may be asking too much of user processes.

As for comparison between overheads for distant processes -- it's basically
the same as the overhead of a local communication plus a ready send.

> 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.

Yes.

> Let's cut to the bottom line: Does CDS1 provide the same degree of
> functionality as a shared buffer with release consistency?

Yes. Simply put, instead of just unlocking (releasing) a structure, you
release it into a cell, and other processes wanting to lock it can acquire it
from there. At each release, the structure is (can be) made consistent, and no
modifications to a buffer can be "felt" by other processes until and unless
that buffer is released (i.e. put into a cell).

-Dave
===============================================================================
David C. DiNucci | MRJ, Inc., Rsrch Scntst |USMail: NASA Ames Rsrch Ctr
dinucci@nas.nasa.gov| NAS (Num. Aerospace Sim.)| M/S T27A-2
(415)604-4430 | Parallel Tools Group | Moffett Field, CA 94035