--map-by ppr:n:unit and --map-by ppr:n:unit:pe=n options

The ppr (processes per resource) mode is a convenient shortcut for specifying the number of processes to run on each resource (a socket, for example).

The purpose of ppr:n:socket option is to launch n ranks on each socket. The purpose of the ppr:n:socket:pe=m option is to launch n ranks per socket, with each rank using m cores.

This following restrictions apply to ppr mode:
  • It will only launch if the slot count is high enough to satisfy the ppr instruction. For example, if enough processes are being started to put n on each socket.
  • The cluster must be fairly homogeneous in order to be able to meaningfully specify a single number as the ranks per socket.
In the --map-by unit:PE=n and --map-by slot:PE=n options topic, special considerations were given to the launching method because the number of slots used was not one-per-process. However with ppr, slots are not taken into account other than the requirement that enough slots exist to satisfy the specified processes per resource instruction.
% mpirun -host hostA:4,hostB:4 --map-by ppr:2:socket:pe=2 ...

R0  hostA  [BB/BB/../../../../../..][../../../../../../../..]
R1  hostA  [../../BB/BB/../../../..][../../../../../../../..]
R2  hostA  [../../../../../../../..][BB/BB/../../../../../..]
R3  hostA  [../../../../../../../..][../../BB/BB/../../../..]
R4  hostB  [BB/BB/../../../../../..][../../../../../../../..]
R5  hostB  [../../BB/BB/../../../..][../../../../../../../..]
R6  hostB  [../../../../../../../..][BB/BB/../../../../../..]
R7  hostB  [../../../../../../../..][../../BB/BB/../../../..]