The send buffersend bufferbuffer, send specified by MPI_SEND consists of count successive entries of the type indicated by datatype,datatype starting with the entry at address buf. Note that we specify the message length in terms of number of entries, not number of bytes. The former is machine independent and facilitates portable programming. The count may be zero, in which case the data part of the message is empty. The basic datatypes 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_INTEGER MPI_REAL MPI_DOUBLE_PRECISION MPI_COMPLEX MPI_LOGICAL MPI_CHARACTER MPI_BYTE MPI_PACKED Possible values for this argument for C and the corresponding C types are listed below.
MPI_CHAR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_FLOAT MPI_DOUBLE MPI_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 MPI_PACKED is explained in
MPI_PACKED
Section .
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. Some examples are:
MPI_LONG_LONG, for C integers declared to be of type
MPI_LONG_LONG
longlong;
MPI_DOUBLE_COMPLEX for double precision complex in
MPI_DOUBLE_COMPLEX
Fortran declared to be of type DOUBLE COMPLEX;
MPI_REAL2,
MPI_REAL2
MPI_REAL4 and MPI_REAL8 for Fortran reals, declared to be of
MPI_REAL4
MPI_REAL8
type REAL*2, REAL*4 and REAL*8, respectively;
MPI_INTEGER1 MPI_INTEGER2 and
MPI_INTEGER4 for Fortran integers, declared to be of type
MPI_INTEGER1
MPI_INTEGER2
MPI_INTEGER4
INTEGER*1, INTEGER*2 and INTEGER*4, respectively.
In addition, MPI provides a mechanism for users to define new, derived,
datatypes. This is explained in Chapter .