根处理器是否也将MPI_Reduce应用于自身?

时间:2016-09-17 01:01:41

标签: c parallel-processing mpi

使用MPI_reduce时,根处理器是否也对自身应用指定的MPI操作?

例如,假设包括root在内的所有处理器运行以下代码,root是否将local_sum缩减为global_sum,就好像它是非root用户一样?

int local_sum;
int global_sum;

int i;
for (i = 0; i < 5; i++) {
  local_sum += rand_nums[i];
}

MPI_Reduce(&local_sum, &global_sum, 1, MPI_INT, MPI_SUM, ROOT, MPI_COMM_WORLD);

1 个答案:

答案 0 :(得分:0)

是的,reduce也适用于root本身。也许在你的脑海中,你认为MPI只是将其他等级的数字添加到根中的local_sum变量。

然而,MPI实际上做的是它从你的通信器中的所有等级(包括根)减少并将结果放到global_sum

如果MPI没有减少root本身,那么MPI_Reduce调用有两个参数是没有意义的。