3.2.2 消息数据 |
MPI_SEND操作指定的发送缓存是由count个类型为datatype的连续数据空间组成, 起始地址为buf。注意我们不是以字节数, 而是以元素的个数指定消息的长度,后者是独立于机器并且更接近应用级。
消息的数据部分是由count个连续值组成, 由datatype指定其类型。count可以是零, 这种情况下消息的数据部分是空的。为消息的数据值指定的基本数据类型应相应于宿主语言的基本数据类型。下表列出对于Fortran语言这个参数类型的可能值和相应的Fortran语言类型。
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
下表列出对于C 语言这个参数类型的可能值和相应的C 语言类型。
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
MPI_BYTE和MPI_PACKED数据类型没有相应于一个Fortran 或C 的数据类型。类型MPI_BYTE的一个值由一个字节组成( 8个二进制位)。一个字节是不用解释的,不同于一个字符。对于字符不同的机器有不同的表示方法,或者可以用一个以上的字节表示字符。另一方面,在所有的机器上,一个字节有相同的二进制值。类型MPI_PACKED将在3.13节解释。
MPI要求支持上述数据类型, 匹配Fortran 77 和ANSI C的基本数据类型。如果宿主语言有下列附加的数据类型,那么应提供附加的MPI数据类型,MPI_LONG_LONG_INT ,( 64 位 )C 的类型为longlong int 的整型; MPI_DOUBLE_COMPLEX 双精度复杂类型, 在Fortran 中为DOUBLE PRECISION类型;MPI_REAL2, MPI_REAL4和MPI_REAL8分别为Fortran的REAL*2, REAL*4和REAL*8实型;MPI_INTEGER1, MPI_INTEGER2和MPI_INTEGER4 分别为Fortran 的INTEGER*1,INTEGER*2和INTEGER*4; 等等。
基本原理. 本设计的一个目的是允许MPI作为一个库被实现, 而不要求附加的预处理或编译。所以编程者不能假设一个通信调用有关于通信缓存中变量数据类型的信息;这个信息必须由一个显示参数提供。在3.3.2节将清楚这些数据类型信息的要求。(基本原理结束)。
Copyright: NPACT |