Description
Problem
The status parameters of all procedures which use a MPI_Status with an "OUT" direction have an incorrect LIS "direction".
The definition of OUT is: the call may update the argument but does not use its input value
. The status parameter is used to determine the action on the status parameter. If MPI_STATUS_IGNORE is passed (read/used by the implementation), then the parameter is not used/updated. This fits the INOUT definition: the call may both use and update the argument
.
This is equally applicable to the "array_of_statuses" parameters. Affected procedures are:
OUT status:
- MPI_Recv
- MPI_Sendrecv
- MPI_Sendrecv_replace
- MPI_Wait
- MPI_Test
- MPI_Waitany
- MPI_Testany
- MPI_Request_get_status
- MPI_Iprobe
- MPI_Probe
- MPI_Improbe
- MPI_Mprobe
- MPI_Mrecv
- MPI_File_read_at
- MPI_File_read_at_all
- MPI_File_write_at
- MPI_File_write_at_all
- MPI_File_read
- MPI_File_read_all
- MPI_File_write
- MPI_File_write_all
- MPI_File_read_shared
- MPI_File_write_shared
- MPI_File_read_ordered
- MPI_File_write_ordered
- MPI_File_read_at_all_end
- MPI_File_write_at_all_end
- MPI_File_read_all_end
- MPI_File_write_all_end
- MPI_File_read_ordered_end
- MPI_File_write_ordered_end
OUT array_of_statuses:
- MPI_Waitall
- MPI_Testall
- MPI_Waitsome
- MPI_Testsome
Correctly specified (already INOUT):
- MPI_Status_set_elements
- MPI_Status_set_elements_x
- MPI_Status_set_cancelled
This change is already broadly in place due to a sentence on page 41 of the MPI Standard 4.0.
Note that this converts status into an INOUT argument.
This sentence is not reflected in the LIS definitions of any of the affected procedures. And this sentence does not cover the entire complexity for all procedures.
This does not affect MPI_Test_cancelled, MPI_Get_elements, MPI_Get_elements_x. The status parameter in marked as IN. Since it must be readable MPI_STATUS_IGNORE is not valid. (A change to be addressed separately.)
Proposal
For the affected procedures we need to change the OUT of the status parameter to INOUT for the LIS only. The language expressions are already appropriate for the languages.
Changes to the Text
Change appropriate status LIS descriptors to be INOUT.
Impact on Implementations
None.
Impact on Users
None.
References and Pull Requests
MPI 4.0, page 12, Procedure Specification, OUT/INOUT definitions
MPI 4.0, page 41, 3.2.6, Passing MPI_STATUS_IGNORE for Status
Metadata
Metadata
Assignees
Labels
Type
Projects
Status