I understand the strict reading, but I don’t believe any implementation sets inactive persistent requests to MPI_REQUEST_NULL.  Do you know if any user applications defend against this option?

One reason to treat this as type-0 is that allows an immediate errata, clearing up an ambiguity.  If we treat it as a change, then (a) MPI 3.1 implementations are thus *wrong* if they don’t set inactive persistent requests to MPI_REQUEST_NULL and (b) the fix won’t take effect until the next MPI version is released.

Bill

William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign






On Jun 11, 2018, at 4:35 AM, Rolf Rabenseifner <rabenseifner@hlrs.de> wrote:

Hi Bill,

This looks like type-0 correction.  I’m happy to treat it as such if there are
no objections.

(A) is clearly a typo-0.

(B) may be better treated with an additional entry in the erratas
for the case that someone has implemented an application with
a list of persistent request handles togehter with some
calls to MPI_Waitsome until all requests are finished.
With this Erratum, he/she now knows that he/she can keep the
the list of request handles the whole time for the
MPI_Startall and all MPI_Waitsome because it is now guaranteed
that no handle will be substituted by MPI_REQUEST_NULL.

Proposal:
MPI-3.0 and MPI-3.1, Sections 3.7.3 and 3.7.5.
As in MPI-1.x and MPI-2.x already described, inactive
persistent request handles are also allowed in all
MPI_WAIT... and MPI_TEST... routines and they are
never changed to MPI_REQUEST_NULL by these routines.
The wrong wording in MPI-3.0 and MPI-3.1 is corrected.

Best regards
Rolf



----- Original Message -----
From: "wgropp" <wgropp@illinois.edu>
To: "Rolf Rabenseifner" <rabenseifner@hlrs.de>, "Comments on the MPI Standard" <mpi-comments@lists.mpi-forum.org>
Sent: Monday, June 11, 2018 10:42:08 AM
Subject: Re: [Mpi-comments] (A) Typo and (B) mal-correction in all MPI_Wait.../Test... descriptions

This looks like type-0 correction.  I’m happy to treat it as such if there are
no objections.

Bill

William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign






On Jun 8, 2018, at 10:42 AM, Rolf Rabenseifner <rabenseifner@hlrs.de> wrote:

Dear all,

A) Typo:

My colleague Martin Bernreuther detected the following typo:

MPI-3.1 Section "3.7.3 Communication Completion", "MPI_WAIT"
page 53, lines 24-25 read

"[...]. Any other type of request
is and the request handle is set to MPI_REQUEST_NULL. [...]"

but should read
"[...]. Any other type of request
is deallocated and the request handle is set to MPI_REQUEST_NULL. [...]"

In other Locations, this sentence is correct, i.e., includes the
word "deallocated", see MPI-3.1
- page 54, lines 20-21 in MPI_TEST,
- page 57, lines 45-46 in MPI_WAITANY,
- page 58, lines 35-36 in MPI_TESTANY,
- page 59, lines 23-24 in MPI_WAITALL,
- page 60, lines 25-26 in MPI_TESTALL,
- page 61, lines 19-20 in MPI_WAITSOME,
whereas MPI_TESTALL does not contain this sentence due
to a shorter description.


B) Mal-correction:

The correction from MPI-2.2 to MPI-3.0 contains wrong wording for
MPI_Wait/Test... in the case of inactive request handles.

The correction was done to include also nonblocking collectives and IO.
But the change to MPI-3.0 was not correct for inactive persistent request
handles.

MPI-1.1 - MPI-2.2 used the wording:

"A call to MPI WAIT returns when the operation identified by request is
complete.
If the communication object associated with this request was created by a
nonblocking send or
receive call, then the object is deallocated by the call to MPI WAIT and the
request handle
is set to MPI REQUEST NULL.
MPI WAIT is a non-local operation.
The call returns, in status, [...].
One is allowed to call MPI WAIT with a null or inactive request argument. In
this case
the operation returns immediately with empty status."

For inactive persistent request handles, the text says:
- no change for the request handle,
- empty status returned.


MPI-3.0 and MPI-3.1 uses the following modified wording:

"A call to MPI_WAIT returns when the operation identified by request is
complete.
If the request is an active persistent request, it is marked inactive. Any other
type of request
is [deallocated] and the request handle is set to MPI_REQUEST_NULL.
MPI_WAIT is a non-local operation.
The call returns, in status, [...].
One is allowed to call MPI_WAIT with a null or inactive request argument. In
this case
the operation returns immediately with empty status."

For inactive persistent request handles, the text says:
- that it shpould be set to MPI_REQUEST_NULL, and
- empty status returned.

The MPI_REQUEST_NULL was never intented and I expect that no MPI-library
has implemented that wrong behavior.
Note that in the case of an array of request handles, in a sequence of
MPI_Wait/Test-any/some
calls, it is allowed to keep the whole array untouched until all regular
requests
are set to MPI_REQUEST_NULL and all active persistent requests are changed to
inactive.


Proposal for correcting thos bug:

Change all sentences

"Any other type of request
is deallocated and the request handle is set to MPI_REQUEST_NULL."

into

"Any other type of non-persistent request
is deallocated and the request handle is set to MPI_REQUEST_NULL."

The locations are:

- page 53, lines 24-25 in MPI_WAIT (together with the typo, see (A) above)
- page 54, lines 20-21 in MPI_TEST,
- page 57, lines 45-46 in MPI_WAITANY,
- page 58, lines 35-36 in MPI_TESTANY,
- page 59, lines 23-24 in MPI_WAITALL,
- page 60, lines 25-26 in MPI_TESTALL,
- page 61, lines 19-20 in MPI_WAITSOME.


Best regards
Rolf


--
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner@hlrs.de .
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 .
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 .
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner .
Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) .
_______________________________________________
mpi-comments mailing list
mpi-comments@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-comments

--
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner@hlrs.de .
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 .
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 .
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner .
Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) .