我在每个进程中加入一组数组元素:
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)