2. Section Deprecated and Removed Names and Functions
on page Deprecated and Removed Names and Functions
,
Section Deprecated since MPI-2.0
on page Deprecated since MPI-2.0
and
Section Removed MPI-1 Bindings
on page Removed MPI-1 Bindings
.
The deprecated functions
MPI_TYPE_HVECTOR,
MPI_TYPE_HINDEXED,
MPI_TYPE_STRUCT,
MPI_ADDRESS,
MPI_TYPE_EXTENT,
MPI_TYPE_LB,
MPI_TYPE_UB,
MPI_ERRHANDLER_CREATE
(and its callback function prototype MPI_Handler_function),
MPI_ERRHANDLER_SET,
MPI_ERRHANDLER_GET,
the deprecated special datatype handles
MPI_LB,
MPI_UB,
and the constants
MPI_COMBINER_HINDEXED_INTEGER,
MPI_COMBINER_HVECTOR_INTEGER,
MPI_COMBINER_STRUCT_INTEGER
were removed from the standard.
This change may affect backward compatibility.
3. Section Procedure Specification
on page Procedure Specification
.
Clarified parameter usage for IN parameters. C bindings are now const-correct where
backward compatibility is preserved.
4. Section Named Constants
on page Named Constants
and
Section Distributed Graph Constructor
on page Distributed Graph Constructor
.
The recommended C implementation value for MPI_UNWEIGHTED
changed from NULL to non-NULL.
An additional weight array constant ( MPI_WEIGHTS_EMPTY) was introduced.
5. Section Named Constants
on page Named Constants
and
Section Version Inquiries
on page Version Inquiries
.
Added the new routine MPI_GET_LIBRARY_VERSION
to query library specific versions,
and the new constant MPI_MAX_LIBRARY_VERSION_STRING.
6. Sections Counts
, Message Data
,
3
, Predefined Reduction Operations
,
on pages Counts
, Message Data
,
3
, Predefined Reduction Operations
,
Sections Derived Datatypes
,Extent and Bounds of Datatypes
,True Extent of Datatypes
,Use of General Datatypes in Communication
,Associating Information with Status
on pages Derived Datatypes
,Extent and Bounds of Datatypes
,True Extent of Datatypes
,Use of General Datatypes in Communication
,Associating Information with Status
,and
Annex Defined Constants
on page Defined Constants
.
New inquiry functions, MPI_TYPE_SIZE_X, MPI_TYPE_GET_EXTENT_X,
MPI_TYPE_GET_TRUE_EXTENT_X, and MPI_GET_ELEMENTS_X, return their results
as an MPI_Count value, which is a new type large enough to represent element
counts in memory, file views, etc. A new function, MPI_STATUS_SET_ELEMENTS_X,
modifies the opaque part of an MPI_Status object so that a call to MPI_GET_ELEMENTS_X
returns the provided MPI_Count value (in Fortran, INTEGER (KIND=MPI_COUNT_KIND)).
The corresponding predefined datatype is MPI_COUNT.
7. Chapter Point-to-Point Communication
on page Point-to-Point Communication
until
Chapter Language Bindings
on page Language Bindings
.
In the C language bindings, the array-arguments' interfaces were modified to consistently
use use [] instead of *.
Exceptions are MPI_INIT, which continues to use char ***argv (correct because of subtle rules regarding the use of the & operator with char *argv[]), and MPI_INIT_THREAD, which is changed to be consistent with MPI_INIT.
8. Sections Return Status
,Address and Size Functions
,Use of General Datatypes in Communication
,Pack and Unpack
on pages Return Status
,
Address and Size Functions
,
Use of General Datatypes in Communication
,
Pack and Unpack
.
The functions MPI_GET_COUNT and MPI_GET_ELEMENTS were
defined to set the count argument to MPI_UNDEFINED when that argument
would overflow.
The functions MPI_PACK_SIZE and MPI_TYPE_SIZE were
defined to set the size argument to MPI_UNDEFINED when that argument
would overflow. In all other MPI-2.2
routines, the type and semantics of the count arguments remain unchanged, i.e., int
or INTEGER.
9. Section Passing MPI_STATUS_IGNORE for Status
on page Passing MPI_STATUS_IGNORE for Status
, and
Section Probe and Cancel
on page Probe and Cancel
.
MPI_STATUS_IGNORE can be also used in
MPI_IPROBE, MPI_PROBE,
MPI_IMPROBE, and MPI_MPROBE.
10. Section Probe and Cancel
on page Probe and Cancel
and
Section Null Processes
on page Null Processes
.
The use of MPI_PROC_NULL in probe operations was clarified.
A special predefined message MPI_MESSAGE_NO_PROC
was defined for the use of matching probe
(i.e., the new MPI_MPROBE and MPI_IMPROBE)
with MPI_PROC_NULL.
11. Sections Matching Probe
,
Matched Receives
,
Transfer of Handles
,
Defined Constants
on pages Matching Probe
,
Matched Receives
,
Transfer of Handles
,
Defined Constants
.
Like MPI_PROBE and MPI_IPROBE, the new MPI_MPROBE and MPI_IMPROBE
operations allow incoming messages to be queried without actually receiving them, except that
MPI_MPROBE and MPI_IMPROBE provide a mechanism to receive the specific message
with the new routines MPI_MRECV and MPI_IMRECV regardless of other intervening probe or receive operations.
The opaque object MPI_Message, the null handle MPI_MESSAGE_NULL, and
the conversion functions
MPI_Message_c2f and
MPI_Message_f2c
were defined.
12. Section Datatype Constructors
on page Datatype Constructors
and
Section Decoding a Datatype
on page Decoding a Datatype
.
The routine MPI_TYPE_CREATE_HINDEXED_BLOCK
and constant MPI_COMBINER_HINDEXED_BLOCK were added.
13. Chapter Collective Communication
on page Collective Communication
and
Section Nonblocking Collective Operations
on page Nonblocking Collective Operations
.
Added nonblocking interfaces to all collective operations.
14. Sections Communicator Constructors
,
Communicator Info
,Window Info
,on pages Communicator Constructors
,
Communicator Info
,Window Info
.
The new routines MPI_COMM_DUP_WITH_INFO,
MPI_COMM_SET_INFO, MPI_COMM_GET_INFO,
MPI_WIN_SET_INFO, and MPI_WIN_GET_INFO wereadded.
The routine MPI_COMM_DUP must also duplicate
info hints.
15. Section Communicator Constructors
on page Communicator Constructors
.
Added MPI_COMM_IDUP.
16. Section Communicator Constructors
on page Communicator Constructors
.
Added the new communicator construction routine MPI_COMM_CREATE_GROUP, which is
invoked only by the processes in the group of the new communicator being constructed.
17. Section Communicator Constructors
on page Communicator Constructors
.
Added the MPI_COMM_SPLIT_TYPE routine
and the communicator split type constant MPI_COMM_TYPE_SHARED.
18. Section Inter-communicator Operations
on page Inter-communicator Operations
.
In MPI-2.2, communication involved in an MPI_INTERCOMM_CREATE operation
could interfere with point-to-point communication on the parent
communicator with the same tag or MPI_ANY_TAG. This interference has
been removed in MPI-3.0.
19. Section Naming Objects
on page Naming Objects
.
Section 6.8 on page 238.
The constant MPI_MAX_OBJECT_NAME also applies for type and window names.
20. Section Low-Level Topology Functions
on page Low-Level Topology Functions
.
MPI_CART_MAP can also be used for a zero-dimensional topologies.
21. Section
on page
and
Section
on page
.
The following neighborhood collective communication routines
were added to support sparse communication on virtual topology grids:
MPI_NEIGHBOR_ALLGATHER, MPI_NEIGHBOR_ALLGATHERV,
MPI_NEIGHBOR_ALLTOALL, MPI_NEIGHBOR_ALLTOALLV,
MPI_NEIGHBOR_ALLTOALLW and the nonblocking variants
MPI_INEIGHBOR_ALLGATHER, MPI_INEIGHBOR_ALLGATHERV,
MPI_INEIGHBOR_ALLTOALL, MPI_INEIGHBOR_ALLTOALLV, and
MPI_INEIGHBOR_ALLTOALLW.
The displacement arguments in MPI_NEIGHBOR_ALLTOALLW
and MPI_INEIGHBOR_ALLTOALLW were defined as address size integers.
In MPI_DIST_GRAPH_NEIGHBORS, an ordering rule was added
for communicators created with MPI_DIST_GRAPH_CREATE_ADJACENT.
22. Section Startup
on page Startup
and
Section Initialization
on page Initialization
.
The use of MPI_INIT, MPI_INIT_THREAD and MPI_FINALIZE
was clarified.
After MPI is initialized, the application can access information about the execution
environment by querying the new predefined info object MPI_INFO_ENV.
23. Section Startup
on page Startup
.
Allow calls to MPI_T routines before MPI_INIT
and after MPI_FINALIZE.
24. Chapter One-Sided Communications
on page One-Sided Communications
.
Substantial revision of the entire One-sided chapter, with new routines for window creation,
additional synchronization methods in passive target communication, new one-sided communication routines,
a new memory model, and other changes.
25. Section The MPI Tool Information Interface
on page The MPI Tool Information Interface
.
A new MPI Tool Information Interface was added.
The following changes are related to the Fortran language support.
26. Section Procedure Specification
on page Procedure Specification
,
and Sections Overview
, Fortran Support Through the mpi_f08 Module
, Requirements on Fortran Compilers
on pages Overview
, Fortran Support Through the mpi_f08 Module
, and Requirements on Fortran Compilers
.
The new mpi_08 Fortran module was introduced.
27. Section Opaque Objects
on page Opaque Objects
,
and Sections Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, Requirements on Fortran Compilers
on pages Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, and Requirements on Fortran Compilers
.
Handles to opaque objects were defined as named types within the mpi_08 Fortran module.
The operators .EQ., .NE., ==, and /= were overloaded to allow the comparison of these handles.
The handle types and the overloaded operators are also available through the mpi Fortran module.
28. Sections Named Constants
, Choice
on pages Named Constants
, Choice
,
Sections Overview
, Problems With Fortran Bindings for MPI
,
Problems Due to Strong Typing
, Problems Due to Data Copying and Sequence Association with Subscript Triplets
,
Problems Due to Data Copying and Sequence Association with Vector Subscripts
on pages Overview
, Problems With Fortran Bindings for MPI
,
Problems Due to Strong Typing
, Problems Due to Data Copying and Sequence Association with Subscript Triplets
,
Problems Due to Data Copying and Sequence Association with Vector Subscripts
, and
Sections Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, Requirements on Fortran Compilers
on pages Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, Requirements on Fortran Compilers
.
Within the mpi_08 Fortran module,
choice buffers were defined as assumed-type and assumed-rank
according to Fortran 2008 TS 29113 [41],
and the compile-time constant MPI_SUBARRAYS_SUPPORTED was set to .TRUE..
With this, Fortran subscript triplets can be used in nonblocking MPI operations;
vector subscripts are not supported in nonblocking operations.
If the compiler does not support this Fortran TR 29113 feature,
the constant is set to .FALSE..
29. Section Fortran Binding Issues
on page Fortran Binding Issues
,
Section Fortran Support Through the mpi_f08 Module
on page Fortran Support Through the mpi_f08 Module
, and
Section Requirements on Fortran Compilers
on page Requirements on Fortran Compilers
.
The ierror dummy arguments are OPTIONAL within the mpi_08 Fortran module.
30. Section Return Status
on page Return Status
,
Sections Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, Requirements on Fortran Compilers
,
on pages Fortran Support Through the mpi_f08 Module
, Fortran Support Through the mpi Module
, Requirements on Fortran Compilers
,
and Section Status
on page Status
.
Within the mpi_08 Fortran module,
the status was defined as TYPE(MPI_Status).
Additionally, within both the mpi and the mpi_f08 modules,
the constants MPI_STATUS_SIZE,
MPI_SOURCE, MPI_TAG, MPI_ERROR,
and TYPE(MPI_Status)
are defined.
New conversion routines were added:
MPI_STATUS_F2F08,
MPI_STATUS_F082F,
MPI_Status_c2f08, and
MPI_Status_f082c,
In mpi.h, the new type MPI_F08_status,
and the external variables MPI_F08_STATUS_IGNORE and MPI_F08_STATUSES_IGNORE were added.
31. Section Buffer Allocation and Usage
on page Buffer Allocation and Usage
.
In Fortran with the mpi module or mpif.h,
the type of the buffer_addr argument of MPI_BUFFER_DETACH
is incorrectly defined and the argument is therefore unused.
32. Section Derived Datatypes
on page Derived Datatypes
,
Section Lower-Bound and Upper-Bound Markers
on page Lower-Bound and Upper-Bound Markers
, and
Section Fortran Derived Types
on page Fortran Derived Types
.
The Fortran alignments of basic datatypes within Fortran derived types
are implementation dependent;
therefore it is recommended to use the BIND(C) attribute for derived types
in MPI communication buffers.
If an array of structures (in C/C++) or derived types (in Fortran)
is to be used in MPI communication buffers,
it is recommended that the user creates a portable datatype handle and
additionally applies MPI_TYPE_CREATE_RESIZED to this datatype handle.
33. SectionsDuplicating a Datatype
,
User-Defined Reduction Operations
,
Process-Local Reduction
,
Datatypes
,
Naming Objects
,
Error Handlers for Communicators
,
Error Handlers for Windows
,
Error Handlers for Files
,
Deprecated since MPI-2.0
,
Additional Support for Fortran Numeric Intrinsic Types
on pagesDuplicating a Datatype
,
User-Defined Reduction Operations
,
Process-Local Reduction
,
Datatypes
,
Naming Objects
,
Error Handlers for Communicators
,
Error Handlers for Windows
,
Error Handlers for Files
,
Deprecated since MPI-2.0
, and
Additional Support for Fortran Numeric Intrinsic Types
.
In some routines, the dummy argument names were changed because they
were identical to the Fortran keywords TYPE and FUNCTION.
The new dummy argument names must be used because the
mpi and mpi_08 modules guarantee keyword-based actual argument lists.
The argument name type was changed
in MPI_TYPE_DUP,
the Fortran USER_FUNCTION of MPI_OP_CREATE,
MPI_TYPE_SET_ATTR,
MPI_TYPE_GET_ATTR,
MPI_TYPE_DELETE_ATTR,
MPI_TYPE_SET_NAME,
MPI_TYPE_GET_NAME,
MPI_TYPE_MATCH_SIZE,
the callback prototype definition
MPI_Type_delete_attr_function,
and the predefined callback function
MPI_TYPE_NULL_DELETE_FN;
function was changed
in MPI_OP_CREATE,
MPI_COMM_CREATE_ERRHANDLER,
MPI_WIN_CREATE_ERRHANDLER,
MPI_FILE_CREATE_ERRHANDLER, and
MPI_ERRHANDLER_CREATE.
For consistency reasons, INOUBUF was changed to INOUTBUF
in MPI_REDUCE_LOCAL,
and intracomm to newintracomm
in MPI_INTERCOMM_MERGE.
34. Section Communicators
on page Communicators
.
It was clarified that in Fortran, the flag values
returned by a comm_copy_attr_fn callback,
including MPI_COMM_NULL_COPY_FN
and MPI_COMM_DUP_FN,
are .FALSE. and .TRUE.; see MPI_COMM_CREATE_KEYVAL.
35. Section Memory Allocation
on page Memory Allocation
.
With the mpi and mpi_f08 Fortran modules,
MPI_ALLOC_MEM now also supports TYPE(C_PTR) C-pointers
instead of only returning an address-sized integer that may be usable together
with a non-standard Cray-pointer.
36. Section Fortran Derived Types
on page Fortran Derived Types
, and
Section Requirements on Fortran Compilers
on page Requirements on Fortran Compilers
.
Fortran SEQUENCE and BIND(C) derived application types
can now be used as buffers in MPI operations.
37. Section Optimization Problems, an Overview
on page Optimization Problems, an Overview
to
Section Permanent Data Movement
on page Permanent Data Movement
,
Section Requirements on Fortran Compilers
on page Requirements on Fortran Compilers
, and
Section Additional Support for Fortran Register-Memory-Synchronization
on page Additional Support for Fortran Register-Memory-Synchronization
.
The sections about Fortran optimization problems and their solutions were
partially rewritten and new methods are added, e.g., the use of the ASYNCHRONOUS attribute.
The constant MPI_ASYNC_PROTECTS_NONBLOCKING tells whether
the semantics of the ASYNCHRONOUS attribute is extended to protect
nonblocking operations.
The Fortran routine MPI_F_SYNC_REG is added.
MPI-3.0 compliance for an MPI library together with a Fortran compiler is
defined in Section Requirements on Fortran Compilers
.
38. Section Fortran Support Through the mpi_f08 Module
on page Fortran Support Through the mpi_f08 Module
.
Within the mpi_08 Fortran module,
dummy arguments are now declared with INTENT=IN,
OUT, or INOUT as defined in the mpi_08 interfaces.
39. Section Fortran Support Through the mpi Module
on page Fortran Support Through the mpi Module
, and
Section Requirements on Fortran Compilers
on page Requirements on Fortran Compilers
.
The existing mpi Fortran module must implement compile-time argument checking.
40. Section Fortran Support Through the mpif.h Include File
on page Fortran Support Through the mpif.h Include File
.
The use of the mpif.h Fortran include file is now strongly discouraged.
41. Section Defined Constants
,
Table `` Predefined functions'' on page Defined Constants
,
Section Prototype Definitions
on page Prototype Definitions
,
and Section Groups, Contexts, Communicators, and Caching Fortran 2008 Bindings
on page Groups, Contexts, Communicators, and Caching Fortran 2008 Bindings
.
Within the new mpi_f08 module, all callback prototype definitions are now
defined with explicit interfaces PROCEDURE(MPI_...) that have the BIND(C)
attribute; user-written callbacks must be modified if the mpi_f08 module is used.
42. Section Prototype Definitions
on page Prototype Definitions
.
In some routines, the Fortran callback prototype names were changed
from ..._FN to ..._FUNCTION to be
consistent with the other language bindings.