假设我有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()来执行类似的操作,但是我很难找到一个等效项来填充缓冲区。抱歉,如果我缺少明显的内容。