Skip to content

MPI_Status OUT LIS is incorrect #516

Open
@martinruefenacht

Description

@martinruefenacht

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

Labels

chap-ioI/O Chapter Committeechap-p2pPoint to Point Communication Chapter CommitteeerrataErrata items for the previous MPI Standardmpi-6For inclusion in the MPI 5.1 or 6.0 standard

Type

No type

Projects

Status

To Do

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions