MPI_ALLREDUCE问题

时间:2011-03-31 13:54:10

标签: mpi

我有一个具有2D本地数组(cval)的代码。这个本地数组由每个处理器计算,最后我调用MPI_ALLREDUCE将此本地数组求和为全局数组(gns)。 这个本地阵列对于不同的处理器有不同的大小。我做全部缩减的方式如下

k = n2spmax- n2spmin + 1 ! an arbitrary big value

do i = nmin, nmax
     call MPI_ALLREDUCE(cval(i,:),gns(i,:),k,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,ierr)
end do

这是写它的正确方法。我不确定吗?

1 个答案:

答案 0 :(得分:1)

不,你不能这样做。 MPI_Allreduce要求通信器中的所有进程都贡献相同数量的数据。这就是为什么有一个计数参数。

为了更好地指导正确的方法,我们需要更清楚地了解您要做的事情。你是在计算gns(i,j)= cval(i,j)所有等级的总和,但并非所有等级都有cval(i,j)s吗?