Re: clarifications

Nick Nevin (nevin@osc.edu)
Tue, 8 Apr 1997 13:33:31 -0400 (EDT)

> Consider the following scenario. All calls pertain to a
> single window which we assume both processes have open.

> Process 0 Process 1
> --------- ---------

> A. put(1) post(0)
> start(1) wait
> B. put(1)
> complete

> In process 0 after the complete it is my understanding that put B MUST
> be complete at the origin but that this is not necessarily the case for
> put A. Further the complete must not wait for put A to complete at the
> origin before returning otherwise deadlock may occur.

> Meanwhile in process 1 after the wait put B must be complete at the
> target but this is once more not necessarily the case for put A.

> Is this correct?

> ***
> The A put is erroneous: RMA operations must be bracketed by
> synchronization calls.
> The claims about B are correct.
> ******

I'm busy trying to implement this stuff so please forgive me if I seem a
little pedantic.

Modify the above scenario to read

Process 0 Process 1
--------- ---------

init init
A. put(1) post(0)
start(1) wait
B. put(1)
complete
fence fence
load

Is put A still erroneous? My reading of the text leads me to believe
that the above situation is quite kosher. I think all the correctness
rules on page 29 are obeyed. If put A is indeed now valid are my
earlier observations correct.

Here are some more minor suggestions/corrections for the text. I am
referring to the Apr 6 version of the one-sided chapter. I use the
notation page.line to refer to locations in the text, thus 2.20 is page
2 line 20.

Most of the C++ bindings are a little off. There seem to be extra
return types present, e.g. at 2.32 we have

static int void * MPI::Mem_alloc(..

1.24 change
changing data access patterns but where the
to
changing data access patterns where the

1.43 change
until the synchronization call occurs
to
until the synchronization calls occur

2.4 end of the line remove the word "other". The processes may
actually be the same.

2.21 change "non negative" to "nonnegative". This is consistent with
the MPI-1 document. This same inconsistency occurs at 12.29.

2.25 I don't think parameter base should be of type integer. I am not
too sure what type it should be, "address" maybe? The type of the
FORTRAN binding may need changing too.

2.38 MPI_MEM_MALLOC should be MPI_MEM_ALLOC

7.22 spurious text

7.34 I am not sure what the conventional wisdom is here but shouldn't
the count parameters be "nonnegative" integers? The origin_count
for MPI_ACCUMULATE is declared this way. If so then the
description of MPI_GET needs the same fix.

9.38, 9.40 the _rank suffix is missing for the parameter target_rank.

24.19 remove the ", anyhow" from the end of the line.

24.16, 24.23 change "The" to "the" for consistency with the other items.

25.1 change "No" to "no" for consistency with the other items.

---nick.

-=-
Nick Nevin nevin@osc.edu
Ohio Supercomputer Center http://www.osc.edu/lam.html