C++ 以MPI格式将处理器结果保存到一个阵列

C++ 以MPI格式将处理器结果保存到一个阵列,c++,c,arrays,parallel-processing,mpi,C++,C,Arrays,Parallel Processing,Mpi,我有一个函数,它根据排名将一些数字存储在一个数组中,完成后,我希望有一个更大的数组,包含所有处理器的结果。 假设我有4个处理器,我的程序运行如下 mpirun -np 4 storesArrays.out 这是我的密码 int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); int currRank; MPI_Comm_rank(MPI_COMM_WORLD, &currRank); int

我有一个函数,它根据排名将一些数字存储在一个数组中,完成后,我希望有一个更大的数组,包含所有处理器的结果。 假设我有4个处理器,我的程序运行如下

     mpirun -np 4 storesArrays.out
这是我的密码

int main(int argc, char *argv[])
{
 MPI_Init(&argc, &argv);

int currRank;
MPI_Comm_rank(MPI_COMM_WORLD, &currRank);

int numRanks;
MPI_Comm_size(MPI_COMM_WORLD, &numRanks);

int *currArray;
currArray = generateValues(currRank,numRanks);
MPI_Finalize();
}
现在我想创建一个数组来存储每个处理器的
curraray
。问题是,如果我在main中初始化数组,它每次都会使用每个处理器初始化它。
有办法吗?

有两种方法:

使用MPI_Gather,它将每个处理器的数据收集到一个“主”处理器


或者,如果每个处理器需要所有处理器的阵列,则使用MPI_Allgather。

使用
MPI_District
/
MPI_Gather
完成MPI数据的分发/收集。