22.5. Changes from Version 2.1 to Version 2.2

Up: Change-Log Next: Changes from Version 2.0 to Version 2.1 Previous: Changes in MPI-3.0

    1. Section Named Constants on page Named Constants.
    It is now guaranteed that predefined named constant handles (as other constants) can be used in initialization expressions or assignments, i.e., also before the call to MPI_INIT.

    2. Section Language Binding on page Language Binding,and Section C++ Bindings on page C++ Bindings.
    The C++ language bindings have been deprecated and may be removed in a future version of the MPI specification.

    3. Section Message Data on page Message Data.
    MPI_CHAR for printable characters is now defined for C type char (instead of signed char). This change should not have any impact on applications nor on MPI libraries (except some comment lines), because printable characters could and can be stored in any of the C types char, signed char, and unsigned char, and MPI_CHAR is not allowed for predefined reduction operations.

    4. Section Message Data on page Message Data.

    5. Section Communication Modes on page Communication Modes,Section Communication Initiation on page Communication Initiation,Section Persistent Communication Requests on page Persistent Communication Requests, andSection Introduction and Overview on page Introduction and Overview.
    The read access restriction on the send buffer for blocking, non blocking and collective API has been lifted. It is permitted to access for read the send buffer while the operation is in progress.

    6. Section Nonblocking Communication on page Nonblocking Communication.
    The Advice to users for IBSEND and IRSEND was slightly changed.

    7. Section Communication Completion on page Communication Completion.
    The advice to free an active request was removed in the Advice to users for MPI_REQUEST_FREE.

    8. Section Non-Destructive Test of status on page Non-Destructive Test of status.
    MPI_REQUEST_GET_STATUS changed to permit inactive or null requests as input.

    9. Section All-to-All Scatter/Gather on page All-to-All Scatter/Gather.
    ``In place'' option is added to MPI_ALLTOALL, MPI_ALLTOALLV, and MPI_ALLTOALLW for intra-communicators.

    10. Section Predefined Reduction Operations on page Predefined Reduction Operations.
    Predefined parameterized datatypes (e.g., returned by
    MPI_TYPE_CREATE_F90_REAL) and optional named predefined datatypes (e.g. MPI_REAL8) have been added to the list of valid datatypes in reduction operations.

    11. Section Predefined Reduction Operations on page Predefined Reduction Operations.
    MPI_(U)INT{8,16,32,64}_T are all considered C integer types for the purposes of the predefined reduction operators. MPI_AINT and MPI_OFFSET are considered Fortran integer types. MPI_C_BOOL is considered a Logical type. MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are considered Complex types.

    12. Section MPI Process-Local Reduction on page MPI Process-Local Reduction.
    The local routines MPI_REDUCE_LOCAL and MPI_OP_COMMUTATIVE have been added.

    The collective function MPI_REDUCE_SCATTER_BLOCK is added to the MPI standard.

    14. Section Exclusive Scan on page Exclusive Scan.
    Added in place argument to MPI_EXSCAN.

    15. Section Communicator Constructors on page Communicator Constructors, andSection Inter-Communication on page Inter-Communication.
    Implementations that did not implement MPI_COMM_CREATE on intercommunicators will need to add that functionality. As the standard described the behavior of this operation on inter-communicators, it is believed that most implementations already provide this functionality. Note also that the C++ binding for both MPI_COMM_CREATE and MPI_COMM_SPLIT explicitly allow Intercomms.

    16. Section Communicator Constructors on page Communicator Constructors.
    MPI_COMM_CREATE is extended to allow several disjoint subgroups as input if comm is an intra-communicator. If comm is an inter-communicator it was clarified that all processes in the same local group of comm must specify the same value for group.

    17. Section Distributed Graph Constructor on page Distributed Graph Constructor.
    New functions for a scalable distributed graph topology interface has been added. In this section, the functions MPI_DIST_GRAPH_CREATE_ADJACENT and MPI_DIST_GRAPH_CREATE, the constants MPI_UNWEIGHTED, and the derived C++ class Distgraphcomm were added.

    18. Section Topology Inquiry Functions on page Topology Inquiry Functions.
    For the scalable distributed graph topology interface, the functions MPI_DIST_GRAPH_NEIGHBORS_COUNT and MPI_DIST_GRAPH_NEIGHBORS and the constant MPI_DIST_GRAPH were added.

    19. Section Topology Inquiry Functions on page Topology Inquiry Functions.
    Remove ambiguity regarding duplicated neighbors with MPI_GRAPH_NEIGHBORS and MPI_GRAPH_NEIGHBORS_COUNT.

    20. Section Version Inquiries on page Version Inquiries.
    The subversion number changed from 1 to 2.

    21. Section Error Handling on page Error Handling,Section Deprecated since MPI-2.2 on page Deprecated since MPI-2.2, andAnnex Prototype Definitions on page Prototype Definitions.
    Changed function pointer typedef names MPI_{Comm,File,Win}_errhandler_fn to MPI_{Comm,File,Win}_errhandler_function. Deprecated old ``_fn'' names.

    22. Section Allowing User Functions at MPI Finalization on page Allowing User Functions at MPI Finalization.
    Attribute deletion callbacks on MPI_COMM_SELF are now called in LIFO order. Implementors must now also register all implementation-internal attribute deletion callbacks on MPI_COMM_SELF before returning from MPI_INIT/ MPI_INIT_THREAD.

    23. Section Accumulate Functions on page Accumulate Functions.
    The restriction added in MPI 2.1 that the operation MPI_REPLACE in MPI_ACCUMULATE can be used only with predefined datatypes has been removed. MPI_REPLACE can now be used even with derived datatypes, as it was in MPI 2.0. Also, a clarification has been made that MPI_REPLACE can be used only in MPI_ACCUMULATE, not in collective operations that do reductions, such as MPI_REDUCE and others.

    24. Section Generalized Requests on page Generalized Requests.
    Add ``*'' to the query_fn, free_fn, and cancel_fn arguments to the C++ binding for MPI::Grequest::Start() for consistency with the rest of MPI functions that take function pointer arguments.

    25. Section External Data Representation: "external32" on page External Data Representation: "external32", andTable 13 on page 13.
    MPI_C_LONG_DOUBLE_COMPLEX, and MPI_C_BOOL are added as predefined datatypes in the "external32" representation.

    26. Section Attributes on page Attributes.
    The description was modified that it only describes how an MPI implementation behaves, but not how MPI stores attributes internally. The erroneous MPI-2.1 Example 16.17 was replaced with three new examples Attributes, Attributes, and Attributes on pages Attributes--Attributes explicitly detailing cross-language attribute behavior. Implementations that matched the behavior of the old example will need to be updated.

    27. Annex Defined Constants on page Defined Constants.
    Removed type MPI::Fint (compare MPI_Fint in Section Types on page Types).
    28. Annex Defined Constants on page Defined Constants.Table Named Predefined Datatypes.

Up: Change-Log Next: Changes from Version 2.0 to Version 2.1 Previous: Changes in MPI-3.0

Return to MPI-4.1 Standard Index
Return to MPI Forum Home Page

(Unofficial) MPI-4.1 of November 2, 2023
HTML Generated on November 19, 2023