[Mpi-comments] (A) Typo and (B) mal-correction in all MPI_Wait.../Test... descriptions

William Gropp wgropp at illinois.edu
Mon Jun 11 04:52:30 CDT 2018


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 at 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 at illinois.edu>
>> To: "Rolf Rabenseifner" <rabenseifner at hlrs.de>, "Comments on the MPI Standard" <mpi-comments at 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 at 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 at 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 at lists.mpi-forum.org
>>> https://lists.mpi-forum.org/mailman/listinfo/mpi-comments
> 
> -- 
> Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at 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) .

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpi-comments/attachments/20180611/a25b9522/attachment-0001.html>


More information about the mpi-comments mailing list