【问题标题】:Save processors results to one Array in MPI将处理器结果保存到 MPI 中的一个数组
【发布时间】: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


【解决方案1】:

有两种方法:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多