9.3. Listing Hosts on the Command Line

Many PRRTE commands accept the --host CLI parameter. --host accepts a comma-delimited list of tokens of the form:

host[:slots]

The host token can be either:

  • A name that resolves to an IP address, or

  • An IP address

Note

The names and/or IP addresses of hosts are only used for identifying the target host on which to launch. They are not used for determining which network interfaces are used by applications (e.g., MPI or other network-based applications).

For network-based applications, consult their documentation for how to specify which network interfaces are used.

The optional integer :slots parameter tells PRRTE the maximum number of slots to use on that host (see this section on definition of the term slot for a description of what a “slot” is).

For example:

prterun --host node1:10,node2,node3:5 ...

--host selects from the hosts already available to the DVM — those a resource manager allocated, or those the DVM was started with. It does not add any. Naming a host that is not among them is an error, reported as:

At least one of the requested hosts is not included in the current
allocation.

   Missing requested host: node9

To bring a new host into a DVM that is already running, use --add-host or --add-hostfile instead. If the host is one the allocation already contains but that carries no daemon — because the DVM was started across only some of the allocation, or because a reservation holding it was released — use --activate, which only starts a daemon and so is permitted even under a resource manager’s allocation.

The :slots count applies to placement, and not merely to the size of the job: it is the number of processes that may be placed on that host, whatever mapping policy is in effect. So

prterun --host node1:1,node2:1,node3:1 -n 3 ./app

puts one process on each of the three hosts under every --map-by directive, and not three on node1.

Asking for more slots on a host than it has depends on who decided how big the host is:

  • Under a resource manager, the number of slots on a host was set by the scheduler, and PRRTE cannot hand a job more of a host than was allocated to it. Naming a larger count is an error. Add the :OVERSUBSCRIBE qualifier to your mapping directive if you really do want more processes than slots.

  • Without a resource manager, the slot count is only a description you gave PRRTE, so a larger :slots count re-states it: the host is taken to have that many slots for that job. The allocation itself is unchanged, and the next job sees the host at its original size. Use --add-host to change the allocation.

Permission to oversubscribe does not change how processes are spread over the hosts you named, only how many a host may end up with. Each host is given the number of slots you asked for first, and the processes left over after that are then divided evenly among the hosts. So

prterun --host a:2,b:2,c:2 -n 12 --map-by core:oversubscribe ./app

puts four processes on each host, and not eight on a. Every mapping directive divides the overflow the same way.