【发布时间】:2014-10-21 19:27:48
【问题描述】:
我有一个函数可以根据排名将一些数字存储在数组中,完成后我想要一个更大的数组,其中包含所有处理器的结果。 假设我有 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。问题是如果我在主中初始化数组,它每次都会用每个处理器初始化它。
有没有办法做到这一点?
【问题讨论】:
-
使用 MPI 分发/收集数据是使用
MPI_Scatter/MPI_Gather完成的。
标签: c++ c arrays parallel-processing mpi