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
:OVERSUBSCRIBEqualifier 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
:slotscount 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-hostto 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.