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