Что именно делает MPI_IN_PLACE
в качестве аргумента для MPI_Scatter
и как его использовать? Я не могу понять из man MPI_Scatter
:Как MPI_IN_PLACE работает с MPI_Scatter?
Когда коммуникатор является интракоммуникаторами, вы можете выполнить операцию сбора на месте (выходной буфер используется в качестве входного буфера). Используйте переменную MPI_IN_PLACE как значение корневого процесса recvbuf. В этом случае recvcount и recvtype игнорируются, а корневой процесс не отправляет данные самому себе. Поскольку опция in-place конвертирует буфер приема в буфер отправки и получения, привязка Fortran, которая включает INTENT, должна маркировать их как INOUT, а не OUT.
Что я хочу сделать, это использовать тот же буфер, который содержит данные о корне в качестве буфера приема друг на друга (например, в MPI_Bcast
). Будет ли MPI_Scatter
с MPI_IN_PLACE
позвольте мне сделать это?
Буфер-пустышка может быть заменен на «NULL», поскольку он никогда не читается. –