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
.
MPI_(U)INT {8,16,32,64 }_T,
MPI_AINT, MPI_OFFSET, MPI_C_BOOL, MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are now valid predefined MPI datatypes.
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 intracommunicators.
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 Process-Local Reduction
on page Process-Local Reduction
.
The local routines MPI_REDUCE_LOCAL and MPI_OP_COMMUTATIVE have been added.
13. Section MPI_REDUCE_SCATTER_BLOCK
on page MPI_REDUCE_SCATTER_BLOCK
.
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 intercommunicators, 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 intracommunicator. If comm is an intercommunicator 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 Process Termination
on page Allowing User Functions at Process Termination
.
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 External Data Representation: ``external32''
on page External Data Representation: ``external32''
.
MPI_(U)INT {8,16,32,64 }_T, MPI_AINT, MPI_OFFSET, MPI_C_COMPLEX, MPI_C_FLOAT_COMPLEX, MPI_C_DOUBLE_COMPLEX,
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.
Added MPI_(U)INT {8,16,32,64 }_T, MPI_AINT, MPI_OFFSET, MPI_C_BOOL, MPI_C_FLOAT_COMPLEX, MPI_C_COMPLEX, MPI_C_DOUBLE_COMPLEX, and MPI_C_LONG_DOUBLE_COMPLEX are added as predefined datatypes.