High Performance Computing Networking
MPI concepts that didn’t make it
The following is an abbreviated list of my favorite concepts and/or specific functions that never made the cut into an official version of the MPI specification:
- MPI_ESP(): The “do what I meant, not what my code says” function. The function is intended as a hint to the MPI implementation that the executing code is likely incorrect, and the implementation should do whatever it feels that the programmer really intended it to do.
- MPI_Encourage(): A watered-down version of MPI_Progress().
- MPI_Alltoalltoall(): Every process sends to every other process, and then, just to be sure, everyone sends to everyone else again. Good for benchmarks.
- MPI_NonCommunicator: A communicator that is semantically equivalent to /dev/null. All messages sent on this communicator are dropped; all messages received on this communicator result in MPI_ERR_TRUNCATED.
- MPI_Sleep(): This is a hint to the MPI implementation that the application is running too fast: please slow down (perhaps by sleeping, blocking, or other implementation-specific mechanism).
- MPI_Ibarrier(): Short for “ignore barriers”, meaning that the MPI implementation is free to ignore barriers after this call. This is a hint to the MPI implementation that the application is going to slow, mainly because the application is using too many barriers. NOTE: This function name unfortunately was later re-used in the non-blocking collectives proposal.
- MPI_Toast(N, M): Under the assumption that MPI/HPC applications tend to generate excess thermal energy via the environments on which they’re running, feed in N pieces of bread into the heat exchanger. Eject M seconds later (specialized hardware may be required).