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

b3n*_*ley 11 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);
Run Code Online (Sandbox Code Playgroud)

将rho作为sendbuf和recvbuf工作吗?

小智 16

你检查过MPI_IN_PLACE吗?根据MPI_AllReduce手册页MPI文档,只要您在同一组内工作,它就可以用于为sendbuf和recvbuf指定相同的缓冲区.

电话会是这样的:

MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)

  • MPI_Reduce 怎么样? (2认同)