A job is an allocation of resources assigned to an individual user for a specified amount of time. Job steps are sets of (possibly parallel) tasks within a job. When a job runs, the scheduler selects and allocates resources to the job. The invocation of the application happens within the batch script, or at the command line for interactive and jobs.
When an application is launched using srun, it runs within a “job step”. The srun command causes the simultaneous launching of multiple tasks of a single application. Arguments to srun specify the number of tasks to launch as well as the resources (nodes, CPUs, memory, and GPUs) on which to launch the tasks.
Multiple srun commands can be invoked sequentially, or in parallel by backgrounding them. Furthermore, the resources specified on any srun command can be less than the total resources that were allocated to the job, but the total resources of all concurrently executing srun commands cannot exceed that total.