Может ли MPI sendbuf и recvbuf быть одним и тем же?
Я добавляю вместе нагрузку элементов массива из каждого процесса:
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 ответов
вы проверили MPI_IN_PLACE
? Согласно mpi_allreduce man page и MPI doc он может использоваться для указания того же буфера для sendbuf и recvbuf, пока вы работаете внутри той же группы.
вызов будет выглядеть так:
MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);