MPI - 如何从本地数组中获取计数到全局数组中?

MPI - How do I get counts from local arrays into global array?

我正在尝试实现一个用于计数排序的 MPI 程序。我已经向每个等级发送了一个本地计数数组以供使用。当我将它们发送回主进程时,如何确保所有本地数组都添加到全局数组中?我已经看到 MPI_Reduce 获取数组的总和,但我需要每个单元格的总和。

示例:

array = {4,0,3,2,2,1,4,1,3,2,4,3,4,3}

countslocal1 = {1,1,2,3,4}
countslocal2 = {0,2,1,1,0}

countsglobal = {1,3,3,4,4}

实际上 MPI_Reduce 正是您所需要的。它不获取数组的总和,而是获取每个单元格的总和。或者引用 MPI 3.1 standard:

Each process can provide one element, or a sequence of elements, in which case the combine operation is executed element-wise on each entry of the sequence.