# 9.7. Launching with Slurm

PRRTE supports two modes of launching parallel jobs under Slurm:

1. Using PRRTE’s full-features `prterun` launcher.

2. Using Slurm’s “direct launch” capability.

Unless there is a strong reason to use `srun` for direct launch, the PRRTE team recommends using `prterun` for launching under Slurm jobs.

## 9.7.1. Using `prterun`

When `prterun` is launched in a Slurm job, `prterun` will automatically utilize the Slurm infrastructure for launching and controlling the individual processes. Hence, it is unnecessary to specify the `--hostfile`, `--host`, or `-n` options to `prterun`.

Note

Using `prterun` is the recommended method for launching applications in Slurm jobs.

`prterun`’s Slurm support should always be available, regardless of how PRRTE or Slurm was installed.

For example:

    # Allocate a Slurm job with 4 slots
    shell$ salloc -n 4
    salloc: Granted job allocation 1234

    # Now run an Open MPI job on all the slots allocated by Slurm
    shell$ prterun mpi-hello-world

This will run the 4 processes on the node(s) that were allocated by Slurm.

Or, if submitting a script:

    shell$ cat my_script.sh
    #!/bin/sh
    prterun mpi-hello-world
    shell$ sbatch -n 4 my_script.sh
    srun: jobid 1235 submitted
    shell$

Similar to the `salloc` case, no command line options specifying number of processes were necessary, since PRRTE will obtain that information directly from Slurm at run time.