MPI_Allgather 到同一个数组但在不同的索引

MPI_Allgather to the same array but at different indexes

考虑我有以下进程,它们有自己的某个大小的数组副本(长度为 4),每个进程都计算了一些值并根据压缩 row/col 将其存储在数组中存储格式。

A = [ . . . .]

P0: A[ 1 . 3.]

P1: A[. 2. 4]

  1. P1 将 A 发送到 P0
  2. P0 结合 P1.A 和 P0.A => [1 2 3 4]

有没有办法合并这些数组,例如使用某种类型的 AllGather?永远不会有任何重叠的值要合并。

我目前的做法是对每个进程使用do MPI_Send(indexes_used, to P0),然后用另一个MPI_Send.

发送A数组

如果每个进程的空值都设置为零,您可以将数组加起来 MPI_Allreduce