Re: more fun with proposals

Steve Huss-Lederman (lederman@cs.wisc.edu)
Fri, 12 Jul 1996 07:53:01 -0500

I'll risk jumping into the fray here. I'm not taking a stand on the
two models, but I would like to add that assuming we have IBARRIER,
then one could also check if the read was done on process 1 (the
IBARRIER completes with a TEST) and then process 2 & 3 can "store
away" the put (if the TEST fails) and go on to compute. This would
limit the idle time for the first case.

Steve

>
> In a BARRIER-based model, like the main draft:
>
> Process 1 Process 2 Process 3
>
> read
> BARRIER BARRIER BARRIER
> PUT to 1 PUT to 1
> compute compute
> PUT to 1 PUT to 1
> BARRIER BARRIER BARRIER
> WINDOW_IN
> read
> BARRIER BARRIER BARRIER
> PUT to 1 PUT to 1
> compute compute
> PUT to 1 PUT to 1
> BARRIER BARRIER BARRIER
> WINDOW_IN
> etc.
>
> Note that the first BARRIER is to ensure that nobody starts writing to
> process 1 while it is still reading. What happens to process 2 and 3
> at the beginning? They stop and wait for the barrier. When 1 is done
> reading, and the barrier clears, the they do their thing, then they
> need to sync again while 1 reads again.
>
> Same example in the PUT/ACCEPT model.
>
> read
> ACCEPTC
> PUTC to 1 PUTC to 1
> compute compute
> PUTC to 1 PUTC to 1
> ACCEPTC ACCEPTC
> read
> ACCEPTC
> PUTC to 1 PUTC to 1
> compute compute
> PUTC to 1 PUTC to 1
> ACCEPTC ACCEPTC
>
> Note that 2 and 3 immediately hit the PUTC. If the read on 1 has finished, and
> 1 is executing its ACCEPTC, then 2 and 3 can immediately move bits, as above.
> But, unlike above, if 1 isn't done with the read yet, 2 and 3 can just store
> away the PUTCs and go on to do the compute. When they get to the next PUTC,
> they can check again whether 1 has reached its ACCEPTC, and the same goes
> again-- if it has not finished, they store away the PUTC, otherwise they move
> bits (along with those in the stored PUTC if necessary). Finally, 2 and 3 hit
> the ACCEPTC, and now they *will* wait until 1 finishes the read and
> executes the ACCEPTC.
>
> So, yes, in this example, I claim that the PUT/ACCEPT model is "more efficient"
> that the main draft.