我有一个函数,根据排名将一些数字存储在一个数组中,完成后我希望有一个更大的数组与所有处理器的结果。 假设我有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中初始化数组,它每次使用每个处理器初始化它。
有没有办法做到这一点?
答案 0 :(得分:1)
有两种方法可以做到:
使用MPI_Gather,它会将每个处理器的数据收集到一个" master"处理器。
或者,如果每个处理器都需要所有处理器'数组,然后使用MPI_Allgather。