This example is the most dramatic when
- Rendevous is chosen for relatively short messages
- Data is pulled by the receiver rather than pushed by the sender
These conditions are met by the native SGI shared memory implementation,
whose implementation changes to Rendevous for messages longer than 64 bytes,
and which pulls the data with a memcpy. Note that this choice is good for
pairwise communication, because it limits the amount of data coping and leaves
the data in the cache of the recipient. The tradeoff is the synchronization
delays shown in this example.
This example suggests that for systems like the SGI that switch to rendezvous
at small message sizes and that pull data, it is better to post MPI_Isends
before MPI_Irecvs. This is the opposite of the case where
aggressive eager delivery is used.