我在C中使用MPI。我能够将数组的一部分分发到不同的处理器。不同的处理器完成了我想要的所有操作。现在我想要将所有处理器中的所有子阵列组合成一个大阵列。例如,如果不同的处理器具有如下的子arrrays:
Processor 1:
0 1 1 0
0 0 1 0
Processor 2:
0 0 1 0
1 1 0 1
Processor 3:
1 1 0 0
1 1 1 1
...
我希望能够将所有子阵列组合或“连接”在一起。例如,我希望大数组为:
0 1 1 0
0 0 1 0
0 0 1 0
1 1 0 1
1 1 0 0
1 1 1 1
...
我试图使用MPI_Reduce,但是找不到我想做的操作。是否有其他MPI方法可以用来实现我想要的东西?
答案 0 :(得分:1)
您正在寻找MPI_Gather:
每个进程(包括根进程)将其发送缓冲区的内容发送到根进程。根进程接收消息并按排名顺序存储它们。
有关文档和示例,请参阅here和here。 MPI 2.2 Standard中的第5.5节也有例子。