Hi,
I am testing performance on a parallel program written in C++ with MPI.
I compared the performance of the same program using blocking and
nonblocking communications (MPI_Send/MPI_Recv on one side, and
MPI_Isend/MPI_Irecv on the other).
The strange point is that, if the size of the transmitted/received
buffers is small, the nonblocking approach works better, but whit bigger
sizes, the same approach works much worse than the blocking one.
The bigger the buffer size, the worse the performance difference between
blocking and nonblocking. ¿Does anybody have any experience with
nonblocking communications in MPI?
Another point is that, as I use nonblocking Sends that match with
nonblocking receives, I might wait for the receives to end and I will be
sure the sends have ended too, but if I don´t wait (using MPI_Wait or
MPI_Waitall) for EVERY send and receive, my program leaks memory. ¿Is
there any way to wait only for the receives whithout leaaking memory?.
Thanks
|