Может ли 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);