10.1.6 C++ Datatypes

Table 10.1 lists all of the C++ predefined MPI-/ datatypes and their corresponding C and C++ datatypes, Table 10.2 lists all of the Fortran predefined MPI-/ datatypes and their corresponding Fortran 77 datatypes. Table 10.3 lists the C++ names for all other MPI datatypes.

MPI::BYTE and MPI::PACKED conform to the same restrictions as MPI_BYTE and MPI_PACKED, listed in Sections 3.2.2 and 3.13 of MPI-/, respectively.


Table 10.1: C++ names for the MPI-/ C and C++ predefined datatypes, and their corresponding C/C++ datatypes.
MPI datatype C datatype C++ datatype
MPI::CHAR char char
MPI::WCHAR wchar_t wchar_t
MPI::SHORT signed short signed short
MPI::INT signed int signed int
MPI::LONG signed long signed long
MPI::SIGNED_CHAR signed char signed char
MPI::UNSIGNED_CHAR unsigned char unsigned char
MPI::UNSIGNED_SHORT unsigned short unsigned short
MPI::UNSIGNED unsigned int unsigned int
MPI::UNSIGNED_LONG unsigned long unsigned long int
MPI::FLOAT float float
MPI::DOUBLE double double
MPI::LONG_DOUBLE long double long double
MPI::BOOL   bool
MPI::COMPLEX   Complex<float>
MPI::DOUBLE_COMPLEX   Complex<double>
MPI::LONG_DOUBLE_COMPLEX   Complex<long double>
MPI::BYTE    
MPI::PACKED    



Table 10.2: C++ names for the MPI Fortran predefined datatypes, and their corresponding Fortran 77 datatypes.
MPI datatype Fortran datatype
MPI::CHARACTER CHARACTER(1)
MPI::INTEGER INTEGER
MPI::REAL REAL
MPI::DOUBLE_PRECISION DOUBLE PRECISION
MPI::LOGICAL LOGICAL
MPI::F_COMPLEX COMPLEX
MPI::BYTE  
MPI::PACKED  



Table 10.3: C++ names for other MPI datatypes. Implementations may also define other optional types (e.g., MPI::INTEGER8).
MPI datatype Description
MPI::FLOAT_INT C/C++ reduction type
MPI::DOUBLE_INT C/C++ reduction type
MPI::LONG_INT C/C++ reduction type
MPI::TWOINT C/C++ reduction type
MPI::SHORT_INT C/C++ reduction type
MPI::LONG_DOUBLE_INT C/C++ reduction type
MPI::LONG_LONG Optional C/C++ type
MPI::UNSIGNED_LONG_LONG Optional C/C++ type
MPI::TWOREAL Fortran reduction type
MPI::TWODOUBLE_PRECISION Fortran reduction type
MPI::TWOINTEGER Fortran reduction type
MPI::F_DOUBLE_COMPLEX Optional Fortran type
MPI::INTEGER1 Explicit size type
MPI::INTEGER2 Explicit size type
MPI::INTEGER4 Explicit size type
MPI::INTEGER8 Explicit size type
MPI::REAL4 Explicit size type
MPI::REAL8 Explicit size type
MPI::REAL16 Explicit size type


The following table defines groups of MPI predefined datatypes:

C integer:
MPI::INT, MPI::LONG, MPI::SHORT,
MPI::UNSIGNED_SHORT, MPI::UNSIGNED,
MPI::UNSIGNED_LONG, MPI::SIGNED_CHAR,
MPI::UNSIGNED_CHAR
Fortran integer:
MPI::INTEGER
Floating point:
MPI::FLOAT, MPI::DOUBLE, MPI::REAL,
MPI::DOUBLE_PRECISION,
MPI::LONG_DOUBLE
Logical:
MPI::LOGICAL, MPI::BOOL
Complex:
MPI::F_COMPLEX, MPI::COMPLEX,
MPI::F_DOUBLE_COMPLEX,
MPI::DOUBLE_COMPLEX,
MPI::LONG_DOUBLE_COMPLEX
Byte:
MPI::BYTE

Valid datatypes for each reduction operation is specified below in terms of the groups defined above.


Op
Allowed Types
MPI::MAX, MPI::MIN
C integer, Fortran integer, Floating point
MPI::SUM, MPI::PROD
C integer, Fortran integer, Floating point, Complex
MPI::LAND, MPI::LOR, MPI::LXOR
C integer, Logical
MPI::BAND, MPI::BOR, MPI::BXOR
C integer, Fortran integer, Byte

MPI::MINLOC and MPI::MAXLOC perform just as their C and Fortran counterparts; see Section 4.9.3 in MPI-/.

MPI-Standard for MARMOT