【发布时间】:2018-05-22 03:20:40
【问题描述】:
大家好,我正在尝试以四角棱柱格式散布 3d 数组。我希望这张照片能阐明我的意思。
认为大立方体是 3d 数组(可以说是 4x4x4 维度),而 P0..3 是处理器。 (P0 将占据大数组的 [0..1][0..1][0..3] 部分)。我正在使用数据类型来执行此操作,我创建了 2 个数据类型;
MPI_Datatype dtype1, surface,dtype2,tetragonal;
MPI_Type_vector((N)/sqrt(size),
(N),
(N),
MPI_FLOAT,
&dtype1);
MPI_Type_commit(&dtype1);
MPI_Type_create_resized(dtype1, 0, 1*sizeof(float), &surface);
MPI_Type_commit(&surface);
MPI_Type_vector(N/sqrt(size),
1,
sqrt(size),
surface,
&dtype2);
MPI_Type_commit(&dtype2);
MPI_Type_create_resized(dtype2, 0, 1*sizeof(float), &tetragonal);
MPI_Type_commit(&tetragonal);
但是,我得到了非常奇怪的结果,我是 MPI 环境的新手,所以我需要一些关于这个问题的帮助来了解数据类型的实际工作方式。 谢谢。
(假设处理器大小是平方数,N 可以被 sqrt(size) 整除)
【问题讨论】: