Skip to content

MPI_Parrived_any API as an addition for Partititioned Communication #537

Open
@tonyskjellum

Description

@tonyskjellum

Problem

The ability to take the next available partition is not supported in the current MPI-4.0 API.

Proposal

The API:

MPI_Parrived_any(MPI_Request prequest, int *partition, int *flag); /* C interface */

The flag will return true if a partition was available, or else false. If true, then the variable partition will be filled with the partition delivered (based on receive-side partitioning of course). This procedure is local.

The parameter request must be an active receive-side partitioned point-to-point request, or else the call is erroneous. (Extensions for partitioned collective communication will be addressed later.)

Multi-Parrived form(s) (named can change at will):

MPI_Parrived_many(MPI_Request prequest[], int nrequests, int *pairs_of_ready_partitions, int *flags, int *nready);

The goal is to allow, for multiple partitioned receives, to test for one or more ready partitions. This yields a relatively complex interface as presently written, yet is closely related to MPI_Test_any for normal requests. An array of active prequests is posed with a length (nrequests); the pair_of_ready_partitions is a set of indexes into the prequest array and partition #. nready specifies the total length of the pairs_of_ready_partitions and flags list. Flags are set true if a partition is ready, otherwise left as is [check: we have to be compliant with the other forms of test.] Cross-cutting of multiple receives is essential to cope with the expected patterns of usage (e.g., 26 neighbors in a 3D halo code).

Changes to the Text

Appropriate text will be added.

Impact on Implementations

This API will have to be added.

Impact on Users

Users will be able to write code that is reactive to data as it arrives per partition, rather than in some receive-requested sequence.

References and Pull Requests

(https://github.com/mpi-forum/mpi-standard/pull/718)

Metadata

Metadata

Labels

chap-partPartitioned Communication Chapter Committeempi-6For inclusion in the MPI 5.1 or 6.0 standard

Type

No type

Projects

Status

To Do

Relationships

None yet

Development

No branches or pull requests

Issue actions