


 
 
 
2. Section Message Data on page Message Data,  
                                       and Annex Defined Values and Handless on page Defined Values and Handless.   
  
 MPI_LONG_LONG_INT,  MPI_LONG_LONG (as synonym),
 MPI_UNSIGNED_LONG_LONG,     
 MPI_SIGNED_CHAR,  
and  MPI_WCHAR are moved from optional to official and they are therefore  
defined for all three language bindings.  
 
 
 
3. Section Return Status on page Return Status.  
  
 MPI_GET_COUNT with zero-length datatypes:  
The value returned as the  count argument of  
 MPI_GET_COUNT for a datatype of length zero where zero bytes  
have been transferred is zero.  If the number of bytes transferred is  
greater than zero,  MPI_UNDEFINED is returned.   
 
 
 
4. Section Derived Datatypes on page Derived Datatypes.  
  
General rule about derived datatypes:  
Most datatype constructors have replication count or block length arguments.  
Allowed values are   
nonnegative  
integers. If the value is zero, no elements are  
generated in the type map and there is no effect on datatype bounds or  
extent.   
 
 
 
5. Section Canonical  MPI_PACK and  MPI_UNPACK on page Canonical  MPI_PACK and  MPI_UNPACK.  
  
 MPI_BYTE should be used to send and receive data that is packed  
using  MPI_PACK_EXTERNAL.  
 
 
 
6. Section All-Reduce on page All-Reduce.  
  
If  comm is an inter-communicator in  MPI_ALLREDUCE, then  
both groups should  
provide  count and  datatype arguments that specify the same type  
signature  
(i.e., it is not necessary that both groups provide the same  count value).   
 
 
 
7. Section Group Accessors on page Group Accessors.  
  
 MPI_GROUP_TRANSLATE_RANKS and  MPI_PROC_NULL:  
 MPI_PROC_NULL is a valid rank for input to  
 MPI_GROUP_TRANSLATE_RANKS, which returns  
 MPI_PROC_NULL as the translated rank.  
 
 
 
8. Section Caching on page Caching.  
  
About the attribute caching functions:   
 
 
 Advice  
        to implementors.  
 
High-quality implementations should raise an error when a keyval  
that was created by a call to  MPI_ XXX_CREATE_KEYVAL is  
used with an object of the wrong type with a call to  
 MPI_YYY_GET_ATTR,  MPI_YYY_SET_ATTR,  MPI_YYY_DELETE_ATTR, or  
 MPI_YYY_FREE_KEYVAL. To do so, it is necessary to maintain, with  
each keyval, information on the type of the associated user  
function.  
 ( End of advice to implementors.) 
 
 
 
9. Section Naming Objects on page Naming Objects.  
  
In  MPI_COMM_GET_NAME:   
In C, a null character is additionally stored at  name[resultlen].   
 resultlen cannot be larger then   
 MPI_MAX_OBJECT_NAME-1.   
In Fortran, name is padded on the right with blank characters.   
 resultlen cannot be larger then   
 MPI_MAX_OBJECT_NAME.   
 
 
 
10. Section Overview of the Functions on page Overview of the Functions.  
  
About  MPI_GRAPH_CREATE and  MPI_CART_CREATE:  
All input arguments must have identical values on all processes  
of the group of  comm_old.   
 
 
 
11. Section Cartesian Constructor on page Cartesian Constructor.  
  
In  MPI_CART_CREATE:  
If  ndims is zero then a zero-dimensional Cartesian topology is created. The  
call is erroneous if it specifies a grid that is larger than the group size or if  
 ndims is negative.  
 
 
 
12. Section Graph Constructor on page Graph Constructor.  
  
In  MPI_GRAPH_CREATE:  
If the graph is empty, i.e.,  nnodes  = 0,   
then  MPI_COMM_NULL is returned in all processes.   
 
 
 
13. Section Graph Constructor on page Graph Constructor.  
  
In  MPI_GRAPH_CREATE:  
A single process is allowed to be defined multiple times in the list of  
neighbors of a process (i.e., there may be multiple edges between two  
processes). A process is also allowed to be a neighbor to itself (i.e., a self  
loop in the graph). The adjacency matrix is allowed to be nonsymmetric.  
 
 
 Advice to users.  
 
 
Performance implications of using multiple edges or a nonsymmetric  
adjacency matrix are not defined. The definition of a node-neighbor  
edge does not imply a direction of the communication.  
 ( End of advice to users.) 
 
 
 
14. Section Topology Inquiry Functions on page Topology Inquiry Functions.  
  
In  MPI_CARTDIM_GET and  MPI_CART_GET:   
If  comm is associated with a zero-dimensional Cartesian topology,  
 MPI_CARTDIM_GET returns  ndims=0 and  MPI_CART_GET will keep  
all output arguments unchanged.   
 
 
 
15. Section Topology Inquiry Functions on page Topology Inquiry Functions.  
  
In  MPI_CART_RANK:  
If  comm is associated with a zero-dimensional Cartesian topology,  
 coord is not significant and 0 is returned in  rank.   
 
 
 
16. Section Topology Inquiry Functions on page Topology Inquiry Functions.  
  
In  MPI_CART_COORDS:  
If  comm is associated with a zero-dimensional Cartesian topology,  
 coords will be unchanged.   
 
 
 
17. Section Cartesian Shift Coordinates on page Cartesian Shift Coordinates.  
  
In  MPI_CART_SHIFT:  
It is erroneous to call  MPI_CART_SHIFT with a direction that is either  
negative or greater than or equal to the number of dimensions in the Cartesian  
communicator. This implies that it is erroneous to call  MPI_CART_SHIFT with a  
 comm that is associated with a zero-dimensional Cartesian topology.  
 
 
 
18. Section Partitioning of Cartesian Structures on page Partitioning of Cartesian Structures.  
  
In  MPI_CART_SUB:   
If all entries in  remain_dims are false or  comm is already associated  
with a zero-dimensional Cartesian topology then  newcomm is associated  
with a zero-dimensional Cartesian topology.   
 
 
 
19. Section Version Inquiries on page Version Inquiries.  
  
The subversion number changed from 0 to 1.  
 
 
 
 
20. Section Environmental Inquiries on page Environmental Inquiries.  
  
In  MPI_GET_PROCESSOR_NAME:   
In C, a null character is additionally stored at  name[resultlen].   
 resultlen cannot be larger then  MPI_MAX_PROCESSOR_NAME-1.   
In Fortran, name is padded on the right with blank characters.   
 resultlen cannot be larger then  MPI_MAX_PROCESSOR_NAME.   
 
 
 
21. Section Error Handling on page Error Handling.  
  
 MPI_{COMM,WIN,FILE}_GET_ERRHANDLER behave as if a  
new error handler object is created.  
That is, once the error handler is no longer needed,  
 MPI_ERRHANDLER_FREE should be called with the error handler returned  
from  MPI_ERRHANDLER_GET or  
 MPI_{COMM,WIN,FILE}_GET_ERRHANDLER  
to mark the error handler for deallocation.  
This provides behavior similar to that of  MPI_COMM_GROUP and  
 MPI_GROUP_FREE.  
 
 
 
22. Section Starting  MPI Processes on page Starting  MPI Processes, see explanations to  MPI_FINALIZE.  
  
 MPI_FINALIZE is collective over all connected processes.  
If no processes were spawned, accepted or connected then this means  
over  MPI_COMM_WORLD; otherwise it is collective over the  
union of all processes that have been and continue to be connected,  
as explained in Section Releasing Connections on page Releasing Connections.  
 
 
 
23. Section Starting  MPI Processes on page Starting  MPI Processes.  
  
About  MPI_ABORT:  
 
 
 Advice to users.  
 
 
Whether the errorcode is returned from the executable or  
from the  MPI process startup mechanism (e.g., mpiexec), is an aspect of  
quality of the  MPI library but not mandatory.  
 ( End of advice to users.) 
 
 
 
 Advice  
        to implementors.  
 
 
Where possible, a high-quality implementation will  
try to return the errorcode from the  MPI process startup mechanism (e.g.  
mpiexec or singleton init).  
 ( End of advice to implementors.) 
 
 
 
24. Section The  Info Object on page The  Info Object.  
  
An implementation must support info objects as caches for arbitrary ( key,  
 value) pairs, regardless of whether it recognizes the key. Each function that  
takes hints in the form of an  MPI_Info must be prepared to ignore any key it  
does not recognize. This description of info objects does not attempt to  
define how a particular function should react if it recognizes a key but not the  
associated value.   
 MPI_INFO_GET_NKEYS,  MPI_INFO_GET_NTHKEY,  
 MPI_INFO_GET_VALUELEN, and  MPI_INFO_GET  
must retain all ( key, value)  
pairs so that layered functionality can also use the  Info object.   
 
 
 
25.   
Section Communication Calls on page Communication Calls.  
  
 MPI_PROC_NULL is a valid target rank in the  MPI  RMA calls  
 MPI_ACCUMULATE,  MPI_GET, and  MPI_PUT.    
The effect is the same as for  MPI_PROC_NULL in  MPI point-to-point  
communication.  
See also item Changes from Version 2.0 to Version 2.1 in this list.   
 
 
 
26.   
Section Communication Calls on page Communication Calls.  
  
After any  RMA operation with rank  MPI_PROC_NULL, it is still necessary to  
finish the  RMA epoch with the synchronization method that started the epoch.   
See also item Changes from Version 2.0 to Version 2.1 in this list.   
 
 
 
27. Section Accumulate Functions on page Accumulate Functions.  
  
 MPI_REPLACE  
in  MPI_ACCUMULATE,   
like the other predefined operations,   
is defined only for the predefined  MPI datatypes.  
 
 
 
28. Section File Info on page File Info.  
  
About  MPI_FILE_SET_VIEW and  MPI_FILE_SET_INFO:  
When an info object that specifies a subset of valid hints is passed to  
 MPI_FILE_SET_VIEW or  MPI_FILE_SET_INFO,   
there will be no effect on  
previously set or defaulted hints that the  info does not specify.   
 
 
 
29. Section File Info on page File Info.  
  
About  MPI_FILE_GET_INFO:  
If no hint exists   
for the file associated with  fh,   
a handle to a newly created info object is returned that  
contains no key/value pair.   
 
 
 
30. Section File Views on page File Views.  
  
If a file does not have the mode  MPI_MODE_SEQUENTIAL,  
then  MPI_DISPLACEMENT_CURRENT is invalid as  disp in   
 MPI_FILE_SET_VIEW.    
 
 
 
31. Section External Data Representation:  "external32" on page External Data Representation:  "external32".  
  
The bias of 16 byte doubles was defined with 10383. The correct value is 16383.   
 
 
 
32.  MPI-2.2, Section 16.1.4 (Section was removed in  MPI-3.0).  
  
In the example in this section,  
the buffer should be declared as const void* buf.   
 
 
 
33. Section Additional Support for Fortran Numeric Intrinsic Types on page Additional Support for Fortran Numeric Intrinsic Types.  
  
About  MPI_TYPE_CREATE_F90_ XXX:  
 
 
 Advice  
        to implementors.  
 
An application may often repeat a call to  
 MPI_TYPE_CREATE_F90_ XXX with the same combination of   
(  XXX, p, r).  
The application is not allowed to free the returned predefined, unnamed  
datatype handles. To prevent the creation of a potentially huge amount of  
handles, the  MPI implementation should return the same datatype handle for  
the same ( REAL/COMPLEX/INTEGER, p, r) combination.   
Checking for the  
combination ( p, r) in the preceding call to   
 MPI_TYPE_CREATE_F90_ XXX and  
using a hash-table to find formerly generated handles should limit the  
overhead of finding a previously generated datatype with same combination  
of (  XXX, p, r).  
 ( End of advice to implementors.) 
 
 
 
34. Section Defined Constants on page Defined Constants.  
  
 MPI_BOTTOM is defined as  
void * const MPI::BOTTOM.   
 


