【问题标题】:MPI Scattering 3D array to tetragonal prismasMPI 将 3D 阵列散射到四边形棱镜
【发布时间】: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) 整除)

【问题讨论】:

    标签: arrays 3d mpi openmpi


    【解决方案1】:

    您不能将MPI_Scatter() 与此派生数据类型一起使用,但您可以使用MPI_Scatterv()(所有计数都相等,但您需要手动计算位移)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-31
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多