27.12.2014 Views

QLogic OFED+ Host Software User Guide, Rev. B

QLogic OFED+ Host Software User Guide, Rev. B

QLogic OFED+ Host Software User Guide, Rev. B

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

E–Integration with a Batch Queuing System<br />

Using SLURM for Batch Queuing<br />

Allocating Resources<br />

When the mpirun command starts, it requires specification of the number of node<br />

programs it must spawn (via the -np option) and specification of an mpihosts<br />

file listing the nodes that the node programs run on. (See “Environment for Node<br />

Programs” on page 4-19 for more information.) Since performance is usually<br />

important, a user might require that his node program be the only application<br />

running on each node CPU. In a typical batch environment, the MPI user would<br />

still specify the number of node programs, but would depend on the batch system<br />

to allocate specific nodes when the required number of CPUs become available.<br />

Thus, batch_mpirun would take at least an argument specifying the number of<br />

node programs and an argument specifying the MPI program to be executed. For<br />

example:<br />

$ batch_mpirun -np n my_mpi_program<br />

After parsing the command line arguments, the next step of batch_mpirun is to<br />

request an allocation of n processors from the batch system. In SLURM, this uses<br />

the command:<br />

eval ‘srun --allocate --ntasks=$np --no-shell‘<br />

Make sure to use back quotes rather than normal single quotes. $np is the shell<br />

variable that your script has set from the parsing of its command line options. The<br />

--no-shell option to srun prevents SLURM from starting a subshell. The srun<br />

command is run with eval to set the SLURM_JOBID shell variable from the output<br />

of the srun command.<br />

With these specified arguments, the SLURM function srun blocks until there are<br />

$np processors available to commit to the caller. When the requested resources<br />

are available, this command opens a new shell and allocates the number of<br />

processors to the requestor.<br />

Generating the mpihosts File<br />

Once the batch system has allocated the required resources, your script must<br />

generate an mpihosts file that contains a list of nodes that are used. To do this,<br />

the script must determine which nodes the batch system has allocated, and how<br />

many processes can be started on each node. This is the part of the script<br />

batch_mpirun that performs these tasks, for example:<br />

mpihosts_file=‘mktemp -p /tmp mpihosts_file.XXXXXX‘<br />

srun --jobid=${SLURM_JOBID} hostname -s | sort | uniq -c \<br />

| awk ’{printf "%s:%s\n", $2, $1}’ > $mpihosts_file<br />

The first command creates a temporary hosts file with a random name, and<br />

assigns the name to the variable mpihosts_file it has generated.<br />

The next instance of the SLURM srun command runs hostname -s once for<br />

each process slot that SLURM has allocated. If SLURM has allocated two slots on<br />

one node, hostname -s is output twice for that node.<br />

D000046-005 B E-3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!