Skip to content

Make Datatypes First-Level Objects #1091

@devreal

Description

@devreal

Problem

With the introduction of Sessions we require datatypes to exist across session boundaries, including the destruction of the last session and the creation of a new one. However, datatype operators are not allowed to be called outside of sessions. That is inconsistent and makes datatypes effectively zombies that cannot be destroyed once the last session is gone. At the same time, datatypes don't hang off any other object (sessions, communicators, etc).

In an AtoI in Section 5.1.9 we state:

The optimizations chosen during MPI_TYPE_COMMIT may no longer be optimal if a
session (or the World Model) is initialized or finalized.

In essence: creating a session to create a datatype for another session (an argument brought forward in past discussions) is a futile exercise.

Proposal

Add the MPI datatype functions to Table 11.1 to allow applications to create and destroy datatypes outside of sessions or the initialization of the WPM.

Changes to the Text

TBD

Impact on Implementations

Datatypes become true first-level objects that may require access to global internal state. Implementations will may have to retain some global state for datatypes.

Impact on Users

Datatypes not requiring sessions for creation and destruction opens new opportunities: third-party libraries (and language-bindings) can create datatypes at any time, regardless of the state of the MPI library.

References and Pull Requests

TBD

Metadata

Metadata

Assignees

No one assigned

    Labels

    chap-datatypesDatatypes Chapter Committeempi-nextFor inclusion in the MPI 5.1 or 6.0 standard

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions