The send buffer specified by the MPI_SEND operation consists of count successive entries of the type indicated by datatype, starting with the entry at address buf. Note that we specify the message length in terms of number of elements, not number of bytes. The former is machine independent and closer to the application level.
The data part of the message consists of a sequence of count values, each of the type indicated by datatype. count may be zero, in which case the data part of the message is empty. The basic datatypes that can be specified for message data values correspond to the basic datatypes of the host language. Possible values of this argument for Fortran and the corresponding Fortran types are listed below.
MPI datatype | Fortran datatype |
MPI_INTEGER | INTEGER |
MPI_REAL | REAL |
MPI_DOUBLE_PRECISION | DOUBLE PRECISION |
MPI_COMPLEX | COMPLEX |
MPI_LOGICAL | LOGICAL |
MPI_CHARACTER | CHARACTER(1) |
MPI_BYTE | |
MPI_PACKED |
MPI datatype | C datatype |
MPI_CHAR | signed char |
MPI_SHORT | signed short int |
MPI_INT | signed int |
MPI_LONG | signed long int |
MPI_UNSIGNED_CHAR | unsigned char |
MPI_UNSIGNED_SHORT | unsigned short int |
MPI_UNSIGNED | unsigned int |
MPI_UNSIGNED_LONG | unsigned long int |
MPI_FLOAT | float |
MPI_DOUBLE | double |
MPI_LONG_DOUBLE | long double |
MPI_BYTE | |
MPI_PACKED |
The datatypes MPI_BYTE and MPI_PACKED do not correspond to a Fortran or C datatype. A value of type MPI_BYTE consists of a byte (8 binary digits). A byte is uninterpreted and is different from a character. Different machines may have different representations for characters, or may use more than one byte to represent characters. On the other hand, a byte has the same binary value on all machines. The use of the type MPI_PACKED is explained in Section 3.13.
MPI requires support of the datatypes listed above, which match the basic
datatypes of Fortran 77 and ANSI C.
Additional MPI datatypes should be provided if the host language has
additional data types:
MPI_LONG_LONG_INT, for (64 bit) C integers declared to be of type
longlong int (Enhancement/Correction in the MPI-1.2 Standard:
);
MPI_DOUBLE_COMPLEX for double precision complex in
Fortran declared to be of type DOUBLE COMPLEX;
MPI_REAL2,
MPI_REAL4 and MPI_REAL8 for Fortran reals, declared to be of
type REAL*2, REAL*4 and REAL*8, respectively;
MPI_INTEGER1 MPI_INTEGER2 and
MPI_INTEGER4 for Fortran integers, declared to be of type
INTEGER*1, INTEGER*2 and INTEGER*4, respectively; etc.
MPI-Standard for MARMOT