MPI sendbuf和recvbuf可以是一样的吗?

时间:2013-05-12 13:28:29

标签: c mpi

我在每个进程中添加了一大堆数组元素:

double rho[1024];
//Some operation to calculate rho for each process;
MPI_Allreduce(rho,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);

将rho作为sendbuf和recvbuf工作吗?

1 个答案:

答案 0 :(得分:15)

您检查过MPI_IN_PLACE吗?根据{{​​3}}和MPI_AllReduce man page,只要您在同一组内工作,它就可以用于为sendbuf和recvbuf指定相同的缓冲区。

电话会是:

MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);