Re: [Mpi-comments] (A) Typo and (B) mal-correction in all MPI_Wait.../Test... descriptions
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" <[email protected]> To: "Rolf Rabenseifner" <[email protected]>, "Comments on the MPI Standard" <[email protected]> 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 <[email protected]> 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 [email protected] . 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 [email protected] https://lists.mpi-forum.org/mailman/listinfo/mpi-comments
-- Dr. Rolf Rabenseifner . . . . . . . . . .. email [email protected] . 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) .
participants (1)
-
Rolf Rabenseifner