将处理器结果保存到MPI中的一个阵列

时间:2014-08-28 03:27:26

标签: 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 numRanks;
MPI_Comm_size(MPI_COMM_WORLD, &numRanks);

int *currArray;
currArray = generateValues(currRank,numRanks);
MPI_Finalize();
}

现在我想创建一个存储每个处理器currArray的数组。问题是如果我在main中初始化数组,它每次使用每个处理器初始化它。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到:

使用MPI_Gather,它会将每个处理器的数据收集到一个" master"处理器。

或者,如果每个处理器都需要所有处理器'数组,然后使用MPI_Allgather。