我将每个进程中的大量数组元素添加到一起:
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 和 receivebuf 工作吗?
你检查过吗MPI_IN_PLACE
?根据MPI_AllReduce 手册页 http://www.open-mpi.org/doc/v1.5/man3/MPI_Allreduce.3.php and MPI doc http://www.mpi-forum.org/docs/mpi-20-html/node145.htm只要您在同一组中工作,它就可以用于为 sendbuf 和 receivebuf 指定相同的缓冲区。
该调用看起来像:
MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)