Hi,

I have questions regarding MPI_Isend and MPI_Test. A sample code is attached, output is as follows.

For instance, both Isend and Recv of 0 start at 15:46:14, but 2 MPI_Test are called before Recv of 0 finishes. My understanding is first Test receives the signal that receiver is ready, and data transfer follows. Then the second Test will see the transfer is complete, and free MPI_Request. Is my understanding correct? Thanks.


Best regards,
Zhen

MPI 1: Recv of 0 started at 15:46:14.
MPI 0: Isend of 0 started at 15:46:14.
MPI 0: Isend of 1 started at 15:46:14.
MPI 0: Isend of 2 started at 15:46:14.
MPI 0: Isend of 3 started at 15:46:14.
MPI 0: Isend of 4 started at 15:46:14.
MPI 0: MPI_Test of 0 at 15:46:16.
MPI 0: MPI_Test of 0 at 15:46:18.
MPI 0: Isend of 0 finished at 15:46:18.
MPI 1: Recv of 0 finished at 15:46:18.
MPI 1: Recv of 1 started at 15:46:18.
MPI 0: MPI_Test of 1 at 15:46:20.
MPI 0: MPI_Test of 1 at 15:46:22.
MPI 0: Isend of 1 finished at 15:46:22.
MPI 1: Recv of 1 finished at 15:46:22.
MPI 1: Recv of 2 started at 15:46:22.
MPI 0: MPI_Test of 2 at 15:46:24.
MPI 0: MPI_Test of 2 at 15:46:26.
MPI 0: Isend of 2 finished at 15:46:26.
MPI 1: Recv of 2 finished at 15:46:26.
MPI 1: Recv of 3 started at 15:46:26.
MPI 0: MPI_Test of 3 at 15:46:28.
MPI 0: MPI_Test of 3 at 15:46:30.
MPI 0: Isend of 3 finished at 15:46:30.
MPI 1: Recv of 3 finished at 15:46:30.
MPI 1: Recv of 4 started at 15:46:30.
MPI 0: MPI_Test of 4 at 15:46:32.
MPI 0: MPI_Test of 4 at 15:46:34.
MPI 0: Isend of 4 finished at 15:46:34.
MPI 1: Recv of 4 finished at 15:46:34.