Re: GRs and request completion

Steve Huss-Lederman (lederman@cs.wisc.edu)
Tue, 6 May 1997 15:06:57 -0500 (CDT)

Dick raised the issue that the use of complete was muddly for GR.
Though using the term completable may help, we did not vote to use
this term in the semantics section of terms. I think I may have
finessed this without a new word. I outline below what I did.

First, I recall to people the text we accepted about nonblocking
operaions:

The word complete is used with respect to operations, requests, and
communications. An {\bf operation completes} when the user is allowed
to re-use resources, and any output buffers have been updated; i.e. a
call to \mpifunc{MPI\_TEST} will return
\mpiarg{flag}~=~\consti{true}. A {\bf request is completed} by a call
to wait, which returns, or a test or get status call which returns
\mpiarg{flag}~=~\consti{true}. This completing call has two effects:
the status is extracted from the request; in the case of test and
wait, if the request was nonpersistent, it is {\bf freed}. A {\bf
communication completes} when all participating operations complete.

The subtle point here is "completes" vs "completed".

Based on this I changed p. 2, line 13 from:

therefore the application must notify \MPI/ when the operation is
complete.

to:

therefore the application must notify \MPI/ when the operation
completes.

and p. 3, lines 27-28 from:

Note that \mpifunc{query\_fn} is invoked only after the request was
marked complete by a call to \mpifunc{MPI\_GREQUEST\_COMPLETE};

to:

Note that \mpifunc{query\_fn} is invoked only after
\mpifunc{MPI\_GREQUEST\_COMPLETE} is called on the request;

and p. 4, lines 20-22 from:

\MPI/ passes to the callback function \mpiarg{complete=true} if the
request is complete when the callback is invoked,
\mpiarg{complete=false}, otherwise.

to:

\MPI/ passes to the callback function \mpiarg{complete=true} if
\mpifunc{MPI\_GREQUEST\_COMPLETE} was already called on the request,
and \mpiarg{complete=false}, otherwise.

and p. 5, lines 1-4 from:

The call informs \MPI/ that generalized request \mpiarg{request} is
complete (see definitions in Section~\ref{terms}). A call to
\mpifunc{MPI\_WAIT(request)} will return and a call to
\mpifunc{MPI\_TEST(request, flag)} will return \mpiarg{flag=true} only
after the request was marked complete by a call to
\mpifunc{MPI\_GREQUEST\_COMPLETE}.

to:

The call informs \MPI/ that the generalized request \mpiarg{request}
completes (see definitions in Section~\ref{terms}). A call to
\mpifunc{MPI\_WAIT(request)} will return and a call to
\mpifunc{MPI\_TEST(request, flag)} will return \mpiarg{flag=true} only
after the generalized request completes by a call to
\mpifunc{MPI\_GREQUEST\_COMPLETE}.

These are subtle changes. Do people think it fixes up the problem? I
have not changed the name of MPI_GREQUEST_COMPLETE. I would consider
MPI_GREQUEST_COMPLETES if people really want it. Given the changes I
made in the text I am not currently planning to do this.

Steve