Dear all,
I have some questions about the duration of the communication with
MPI_Send and MPI_Recv. I am using either SkaMPI either my implementation
to measure the pingpong (MPI_Send and MPI_Recv) time between two nodes
for 1 byte and more. The timing of the pingpong is 106.8 microseconds.
Although if I measure only the ping of the message (only the MPI_Send)
the time is ~20 microseconds. Could anyone explain me why it is not the
half? I would like to understand what is the difference inside to
OpenMpi about MPI_Send and MPI_Recv.
More analytical the timings for pingpong between two nodes with a simple
pingpong application, timings only for rank 0 (almost the same for rank 1):
1 byte, time for MPI_Send, 9 microsec, time for MPI_Recv, 86.4 microsec
1600 bytes, time for MPI_Send, 14.7 microsec, time for MPI_Recv, 197.07
microsec
3200 bytes, time for MPI_Send, 19.73 microsec, time for MPI_Recv, 227.6
microsec
518400 bytes, time for MPI_Send, 3536.5 microsec, time for MPI_Recv,
5739.6 microsec
1049760 bytes, time for MPI_Send, 8020.33 microsec, time for MPI_Recv,
10287 microsec
So the duration of the MPI_Send is till the buffer goes to the queue of
the destination without the message to be saved in the memory or
something like this, right? So if I want to know the real time of
sending one message to another node (taking the half of pingpoing seems
that is not right) should I use a program with other commands like
MPI_Fence, MPI_Put etc? Or is there any flag when I execute the
application where MPI_Send behaves like I would expect? According to MPI
standards what is MPI_Send measuring? If there is any article which
explain all these please inform me.
Thanks a lot,
Best regards,
George Markomanolis