Cisco Blogs

MPI concepts that didn’t make it

- October 8, 2010 - 0 Comments

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).

In an effort to keep conversations fresh, Cisco Blogs closes comments after 60 days. Please visit the Cisco Blogs hub page for the latest content.