MPI:如何将多个处理器中的子阵列连接成一个更大的单个阵列

时间:2013-04-16 20:48:05

标签: c mpi

我在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方法可以用来实现我想要的东西?

1 个答案:

答案 0 :(得分:1)

您正在寻找MPI_Gather:

  
    

每个进程(包括根进程)将其发送缓冲区的内容发送到根进程。根进程接收消息并按排名顺序存储它们。

  

有关文档和示例,请参阅herehereMPI 2.2 Standard中的第5.5节也有例子。