apadana
apadana

Reputation: 722

How do the different types of point to point communication in MPI differ in terms of performance?

The latest version of MPI includes these types of point to point (p-p) communication:

As far as I know, historically blocking p-p communication was the first type that existed. Then different types of non-blocking p-p communication were introduced one after the other to increase performance. For example, they allow overlap of computation and communication. But are there cases where blocking p-p communication is actually faster than the non-blocking alternatives? If no, what does justify their existence? Simply backward compatibility and their simplicity of use?

Upvotes: 1

Views: 168

Answers (1)

Victor Eijkhout
Victor Eijkhout

Reputation: 5810

It is a misconception that non-blocking communication was motivated by performance: it was mostly to be able to be able to express deadlock/serialization-free communication patterns. (Indeed, actually getting overlap of communication/computation was only possible through the "Iprobe trick". Only recently with "progress threads" has it become a more systematic possibility.)

Partitioned communication is intended for multi-threaded contexts. You may call that a performance argument, or a completely new use case.

Persistent sends have indeed the potential for performance improvement, since various setups and buffer allocations can be amortized. However, I don't see much evidence that MPI implementations actually do this. https://arxiv.org/abs/1809.10778

Finally, you're missing buffered, synchronized, and ready sends. These indeed have the potential to improve performance, though again I don't see much evidence that they do.

Upvotes: 2

Related Questions