MPI针对每个等级将数据收集到不同的索引中

时间:2019-03-06 20:40:46

标签: mpi

假设我有5 x 3的数组,需要用其他等级的数据填充。每个等级具有需要发送的不同数量的行(n x 3),但理想情况下,我想指定数据应在最终数组中占据的行。例如(对不起,Pythony语法):

Rank 0
Data = [[A1,A2,A3],
        [A4,A5,A6]]
Indices = [1, 4]

Rank 1
Data = [[B1,B2,B3]]
Indices = [2]

Rank 2
Data = [[C1,C2,C3],
        [C4,C5,C6]]
Indices = [0,3]


Post Gather Data
Rank 0 = [[C1,C2,C3],
          [A1,A2,A3],
          [B1,B2,B3],
          [C4,C5,C6],
          [A4,A5,A6]]

哪个等级的映射负责所有等级上可用的索引,所以我绝对可以做一个collectv()并将其映射回最终数组,但是我希望可以将其正确填充为一部分通信。

进行IO时,我通过让每个等级定义自己的索引数据类型然后调用MPI_File_write_all()来执行类似的操作,但是我很难找到一个等效项来填充缓冲区。抱歉,如果我缺少明显的内容。

0 个答案:

没有答案