4

我在 C 中使用 MPI。我能够将数组的一部分分配给不同的处理器。不同的处理器完成了我想要的所有操作。现在,我想将所有处理器中的所有子阵列组合成一个大阵列。例如,如果不同的处理器具有如下子阵列:

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 方法来实现我正在寻找的东西吗?

4

1 回答 1

1

您正在寻找 MPI_Gather:

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

有关文档和示例,请参见此处此处MPI 2.2 标准中的第 5.5 节也有示例。

于 2013-04-16T21:28:22.017 回答