The meaning of the bytes argument varies slightly depending on the situation. Here is some general information for different types of sends and receives, followed by some examples of how the byte argument works with them.
point-to-point blocking sends - The start probes for routines that initiate point-to-point blocking sends report the number of bytes to be sent. These routines are:
MPI_Bsend
MPI_Rsend
MPI_Send
MPI_Ssend
MPI_Sendrecv
MPI_Sendrecv_replace
point-to-point nonblocking sends - The end probes for routines that initiate point-to-point nonblocking sends report the number of bytes to be sent. These routines are:
MPI_Bsend_init
MPI_Ibsend
MPI_Irsend
MPI_Isend
MPI_Issend
MPI_Rsend_init
MPI_Send_init
MPI_Ssend_init
point-to-point receives - The end probes for routines that terminate or could terminate point-to-point nonblocking sends report the number of bytes actually received. These routines are:
MPI_Iprobe
MPI_Probe
MPI_Recv
MPI_Test
MPI_Testall
MPI_Testany
MPI_Testsome
MPI_Wait
MPI_Waitall
MPI_Waitany
MPI_Waitsome
MPI_Sendrecv
MPI_Sendrecv_replace
collectives - The start probes for collective routines report the number of bytes to be sent from an MPI process and the number to be received at the process. Such byte counts are independent of the algorithm used. For example, the number of bytes sent from the root in a broadcast is given as the number of bytes in the broadcast message, regardless of whether the root sends this message multiple times as part of a binary-tree fan-out. These collective routines are:
MPI_Allgather, MPI_Allgatherv
sendbytes - Number of bytes to be sent from this process.
recvbytes - Total number of bytes to be received at any process from all processes.
MPI_Allreduce, MPI_Reduce, MPI_Reduce_scatter
bytes - Number of bytes on any process to be reduced.
MPI_Alltoall, MPI_Alltoallv
sendbytes - Total number of bytes to be sent from this process to all processes.
recvbytes - Total number of bytes to be received at this process from all processes.
MPI_Bcast
bytes - Number of bytes to be broadcast.
MPI_Gather, MPI_Gatherv
sendbytes - Root reports total number of bytes to be sent; other processes report 0.
recvbytes - Root reports total number of bytes to be received; other processes report 0.
MPI_Scan
bytes - Number of bytes contributed by any process.
MPI_Scatter, MPI_Scatterv
sendbytes - Root reports total number of bytes to be sent; other processes report 0.
recvbytes - Number of bytes to be received at this process from the root.
pack and unpack - The start probes for these routines report the number of bytes packed or unpaced. These routines are:
MPI_Pack
MPI_Unpack
MPI_Send
call MPI_Send(x,m,MPI_REAL8,...)
Probe mpi_send_start reports that 8*m bytes are to be sent.
MPI_Recv
call MPI_Recv(x,n,MPI_REAL8,...)
Probe mpi_recv_end reports the number of bytes that were actually received, which must be at most 8*n.
MPI_Sendrecv
call MPI_Sendrecv(x,m,MPI_REAL8,...,y,n,MPI_REAL8,...)
Probe mpi_sendrecv_start reports that 8*m bytes are to be sent, and probe mpi_sendrecv_end reports the number of bytes that were actually received, which must be at most 8*n.
MPI_Irecv, MPI_Wait
integer req call MPI_Irecv(x,n,MPI_REAL8,...,req,...) call MPI_Wait(req,...)
Probe mpi_wait_end reports the number of bytes that were actually received, which must be at most 8*n.
MPI_Isend, MPI_Irecv, MPI_Wait
integer reqs(2) call MPI_Isend(x,m,MPI_REAL8,...,reqs(1),...) call MPI_Irecv(Y,N,MPI_REAL8,...,reqs(2),...) call MPI_Waitany(2,reqs,...) call MPI_Waitany(2,reqs,...)
Probe mpi_isend_start reports that 8*m bytes are to be sent. The MPI_Waitany call that completes the receive will show the number of bytes that were actually received, which must be at most 8*n, in its mpi_waitany_end probe. The other MPI_Waitany call, which completes the send, will report 0 bytes received.
MPI_Waitall
integer reqs(8) call MPI_Isend(x1,m,MPI_REAL8,...,reqs(1),...) call MPI_Isend(x2,m,MPI_REAL8,...,reqs(2),...) call MPI_Isend(x3,m,MPI_REAL8,...,reqs(3),...) call MPI_Isend(x4,m,MPI_REAL8,...,reqs(4),...) call MPI_Irecv(x5,n,MPI_REAL8,...,reqs(5),...) call MPI_Irecv(x6,n,MPI_REAL8,...,reqs(6),...) call MPI_Irecv(x7,n,MPI_REAL8,...,reqs(7),...) call MPI_Irecv(x8,n,MPI_REAL8,...,reqs(8),...) call MPI_Waitall(8,reqs,..)
Probe mpi_isend_start reports that 8*m bytes are to be sent in each of the four MPI_Isend cases. Probe mpi_waitall_end reports the number of bytes that were actually received, which must be at most 4*8*n.