Да, вы можете повторно использовать MPI_Request
переменные. Эти переменные являются только дескрипторами, и их не нужно инициализировать для передачи их в MPI_Isend
или MPI_Irecv
(они помечены как параметры OUT для этих функций). Конечно, они должны быть действительными при переходе к любой функции, которая завершает их, например, MPI_Wait
. Эти функции также установят переменные на MPI_REQUEST_NULL
после завершения.
Вы даже можете пойти дальше и использовать постоянные запросы связи . Если у вас есть запросы в цикле, которые сохраняют один и тот же список аргументов при нескольких вызовах. Вы можете использовать MPI_Send_init
и т. Д. Вместе с MPI_Start
. Это может иметь лучшую производительность. Обратите внимание, что при постоянных запросах функции завершения (например, MPI_Wait
) будут помечать запрос как неактивный, а не устанавливать переменную на MPI_REQUEST_NULL
.