大家好,我正在尝试以四方棱镜格式分散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)均匀整除)