我在 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
...
Run Code Online (Sandbox Code Playgroud)
我希望能够将所有子数组组合或“连接”在一起。例如我希望大数组是:
0 1 1 0
0 0 1 0
0 0 1 0
1 1 0 1
1 1 0 0
1 1 1 1
...
Run Code Online (Sandbox Code Playgroud)
我试图使用 MPI_Reduce 但找不到一个操作来完成我想做的事情。是否有另一种 MPI 方法可以用来实现我正在寻找的目标?
您正在寻找 MPI_Gather:
每个进程(包括根进程)将其发送缓冲区的内容发送到根进程。根进程接收消息并按排名顺序存储它们。
有关文档和示例,请参阅此处和此处。MPI 2.2 标准中的 5.5 节也有示例。
| 归档时间: |
|
| 查看次数: |
3922 次 |
| 最近记录: |