Re: [Mpi-comments] (A) Typo and (B) mal-correction in all MPI_Wait.../Test... descriptions
I understand the strict reading, but I don’t believe any implementation sets inactive persistent requests to MPI_REQUEST_NULL.
Yes, I completely agree. Therefore, my errata proposal addresses only users.
Do you know if any user applications defend against this option?
No, but my knowledge about applications in the world is very small. But I remember that there were positive remarks from at least one MPI-implementor that he had optimized their persistent communications. Our courses are teaching this. Therefore there may be users of persistent communications.
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.
I would not treat it as a change. I would treat it as an Erratum to MPI-3.0 AND 3.1, i.e., a retrospectiv correction of the text, which is done now / when it is published in the list of errata, but which is backward effective since the publication Dates of MPI-3.0 and MPI-3.1. Therefore, implementers never need to implement the wrong written text passage in versions 3.0 and 3.1. But users may have written applications according to the current wording. This means, that they wrote software to save the original correct inactive persistent request handle before it is destroyed. They may never checked that they have a "Buggy" library that never overwrote persistent request handles in subsequent calls to MPI_Wait.../Test... . They can learn from the errata text, that this complication in their Software was not needed. If we only make a typo-0 correction, then they have no opportunity to re-read the definition of MPI_Wait.../Test... for inactive persistent request handles. I'm not sure whether such obvious errata (including errata entry in the change-log) can be handled as typo-0 correction (i.e., without voting?). Best regards Rolf ----- Original Message -----
From: "wgropp" <[email protected]> To: "Rolf Rabenseifner" <[email protected]> Cc: "Comments on the MPI Standard" <[email protected]> Sent: Monday, June 11, 2018 11:52:30 AM Subject: Re: [Mpi-comments] (A) Typo and (B) mal-correction in all MPI_Wait.../Test... descriptions
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 <[email protected]> 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" <[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) .
-- 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