Taken from OpenMPI FAQ 21. Can I oversubscribe nodes (run more processes than processors)?
Open MPI basically runs its message passing progression engine in two modes: aggressive and degraded.
- Degraded: When Open MPI thinks that it is in an oversubscribed mode (i.e., more processes are running than there are processors available), MPI processes will automatically run in degraded mode and frequently yield the processor to its peers, thereby allowing all processes to make progress.
- Aggressive: When Open MPI thinks that it is in an exactly- or under-subscribed mode (i.e., the number of running processes is equal to or less than the number of available processors), MPI processes will automatically run in aggressive mode, meaning that they will never voluntarily give up the processor to other processes. With some network transports, this means that Open MPI will spin in tight loops attempting to make message passing progress, effectively causing other processes to not get any CPU cycles (and therefore never make any progress).
Example of Degraded Modes (Running 4 Slots on 1 Physical cores). MPI knows that there is only 1 slot and 4 MPI process are running on the single slot.
$ cat my-hostfile localhost slots=1 $ mpirun -np 4 --hostfile my-hostfile a.out
Example of Aggressive Modes (Running 4 slots on 4 or more Physical Cores). MPI knows that there is at least 4 slots for the 4 MPI process.
$ cat my-hostfile localhost slots=4 $ mpirun -np 4 --hostfile my-hostfile a.out