例如,
if (rank == 0) {
MPI_Isend(&sendbuf, ..., 1, ..., &request);
MPI_Wait(&request, ...); /* Is this wait necessary? */
} else if (rank == 1) {
MPI_Irecv(&recvbuf, ..., 0, ..., &request);
MPI_Wait(&request, ...);
}
在理论上,MPI_Isend之后是否需要MPI_Wait呢?
需要单独的发送完成调用来完成通信。
但在实践中,不需要显式等待MPI_Isend也可以正常工作。
MPI_Request_free
,则无法保证发送的完成。除非您确实知道自己在做什么,否则不要使用它。 - Zulan