向量数据类型的生成
它的形式如下:
MPI_TYPE_VECTOR( count, blocklength, stride, oldtype, newtype
)
IN count 块的数目
IN blocklength 块中(基类型)元素个数
IN stride 相邻两块起始位置之间距离(以可容纳的(基类型)元素个数衡量
IN oldtype 基类型
OUT newtype 新的数据类型
int MPI_Type_vector( int count, int blocklength, int stride,
MPI_Datatype oldtype, MPI_Datatype *newtype);
在构造新类型时,构造器首先构造块,块是由blocklength个基类型(oldtype)数据构成的CONTIGUOUS类型。然后用count个块构成newtype类型。相邻的块之间的间距由stride给出,这个数据表示相邻的两块的起始位置之间能够容纳的oldtype类型的元素的个数(注意,需要包含因为地址对齐的要求所加入的填塞数据)。
例子:基类型{(double, 0),(char, 8)},
MPI_TYPE_VECTOR(2,2,3,...)的结果为
{(double,0),(char,8),(double,16),(char,24),(double,48),(char,56),(double
,64),(char,72)}。注意(double,32),(char,40)没有包含在里面。
(思考,如何将MPI_TYPE_CONTIGUOUS用MPI_TYPE_VECTOR调用表示)
|