I have an MPI program which oversubscribes/overcommits its processors. That is: there are many more processes than processors.
Only a few of these processes are active at a given time, though, so there shouldn't be contention for computational resources.
But, much like the flock of seagulls from Finding Nemo, when those processes are waiting for communication they're all busy-looping, asking "Mine? Mine? Mine?"
I am using both Intel MPI and OpenMPI (for different machines). How can I convince them both not to busy loop?
My quick and dirty solution has been to use MPI_Iprobe
in a loop with a sleep command (see here).