使用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);
答案 0 :(得分:0)
是的,reduce也适用于root本身。也许在你的脑海中,你认为MPI只是将其他等级的数字添加到根中的local_sum
变量。
然而,MPI实际上做的是它从你的通信器中的所有等级(包括根)减少并将结果放到global_sum
。
如果MPI没有减少root本身,那么MPI_Reduce调用有两个参数是没有意义的。