Running Jobs

Vista's job scheduler is the Slurm Workload Manager. Slurm commands enable you to submit, manage, monitor, and control your jobs. Jobs submitted to the scheduler are queued, then run on the compute nodes. Each job consumes Service Units (SUs) which are then charged to your allocation. See the Job Management section below for further information.

Warning

Queue Restrictions Do not request specific nodes when submitting jobs without prior approval from staff. Allow Slurm to allocate nodes as appropriate.

Any job requesting specific compute nodes via batch scripts, idev invocations, or MPI hostfiles will be deleted from the queue.

Important

Queue limits are subject to change without notice. Vista admins may occasionally adjust queue settings in order to ensure fair scheduling for the entire user community. TACC's qlimits utility will display the latest queue configurations.

Table 4. Production Queues

Queue Name Node Type Max Nodes per Job
(assoc'd cores)
Max Job
Duration
Max Nodes
per User
Max Jobs
per User
Max Submit Charge Rate
(per node-hour)
gg Grace/Grace 32 nodes
(4608 cores)
48 hrs 128 20 40 0.33 SU
gh Grace/Hopper 64 nodes
(4608 cores/64 gpus)
48 hrs 192 20 40 1 SUs
gh-dev Grace Hopper 8 nodes
(576 cores)
2 hrs 8 1 3 1 SU

Job Accounting

Like all TACC systems, Vista's accounting and allocation system is based on node-hours: one unadjusted Service Unit (SU) represents a single compute node used for one hour (a node-hour). For any given job, the total cost in SUs is the use of one compute node for one hour of wall clock time plus any charges or discounts for the use of specialized queues, e.g. Stampede3's pvc queue, Lonestar6's gpu-a100 queue, and Frontera's flex queue. The queue charge rates are determined by the supply and demand for that particular queue or type of node used and are subject to change.

The Slurm scheduler tracks and charges for usage to a granularity of a few seconds of wall clock time. The system charges only for the resources you actually use, not those you request. If your job finishes early and exits properly, Slurm will release the nodes back into the pool of available nodes. Your job will only be charged for as long as you are using the nodes.

TACC does not implement node-sharing on any compute resource. Each Vista compute node can be assigned to only one user at a time; hence a complete node is dedicated to a user's job and accrues wall-clock time for all the node's cores/GPUs whether or not all cores/GPUs are used.

TACC Charging Policy

Vista SUs billed = (# nodes) x max(job duration in wall clock hours,.25) x (charge rate per node-hour)

All running jobs are charged a minimum of 15 minutes (.25 hrs) of queue time regardless of actual runtime. This policy ensures equal access to the queues for all users as TACC's user base expands.

For example: a 4-node job in Vista's gh queue which runs for five minutes would be charged as follows:

4 nodes * 0.25 hrs * 1 SU/node-hour = .5 SUs

We strongly encourage users launching large jobs to do thorough testing of your code at smaller node counts prior to maximizing your runs.

Submitting Batch Jobs with sbatch

Use Slurm's sbatch command to submit a batch job to one of the Vista queues:

login1$ sbatch myjobscript

Where myjobscript is the name of a text file containing #SBATCH directives and shell commands that describe the particulars of the job you are submitting. The details of your job script's contents depend on the type of job you intend to run.

In your job script you (1) use #SBATCH directives to request computing resources (e.g. 10 nodes for 2 hrs); and then (2) use shell commands to specify what work you're going to do once your job begins. There are many possibilities: you might elect to launch a single application, or you might want to accomplish several steps in a workflow. You may even choose to launch more than one application at the same time. The details will vary, and there are many possibilities. But your own job script will probably include at least one launch line that is a variation of one of the examples described here.

Your job will run in the environment it inherits at submission time; this environment includes the modules you have loaded and the current working directory. In most cases you should run your applications(s) after loading the same modules that you used to build them. You can of course use your job submission script to modify this environment by defining new environment variables; changing the values of existing environment variables; loading or unloading modules; changing directory; or specifying relative or absolute paths to files. Do not use the Slurm --export option to manage your job's environment: doing so can interfere with the way the system propagates the inherited environment.

Table 5. below describes some of the most common sbatch command options. Slurm directives begin with #SBATCH; most have a short form (e.g. -N) and a long form (e.g. --nodes). You can pass options to sbatch using either the command line or job script; most users find that the job script is the easier approach. The first line of your job script must specify the interpreter that will parse non-Slurm commands; in most cases #!/bin/bash or #!/bin/csh is the right choice. Avoid #!/bin/sh (its startup behavior can lead to subtle problems on Vista), and do not include comments or any other characters on this first line. All #SBATCH directives must precede all shell commands. Note also that certain #SBATCH options or combinations of options are mandatory, while others are not available on Vista.

By default, Slurm writes all console output to a file named "slurm-%j.out", where %j is the numerical job ID. To specify a different filename use the -o option. To save stdout (standard out) and stderr (standard error) to separate files, specify both -o and -e options.

Tip

The maximum runtime for any individual job is 48 hours. However, if you have good checkpointing implemented, you can easily chain jobs such that the outputs of one job are the inputs of the next, effectively running indefinitely for as long as needed. See Slurm's -d option.

Table 5. Common sbatch Options

Option Argument Comments
-A projectid Charge job to the specified project/allocation number. This option is only necessary for logins associated with multiple projects.
-a
or
--array
=tasklist Vista supports Slurm job arrays. See the Slurm documentation on job arrays for more information.
-d= afterok:jobid Specifies a dependency: this run will start only after the specified job (jobid) successfully finishes
-export= N/A Avoid this option on Vista. Using it is rarely necessary and can interfere with the way the system propagates your environment.
--gres N/A Vista does not support this option. Slurm will reject any job script containing this directive.
--gpus-per-task N/A Vista does not support this option. Slurm will reject any job script containing this directive.
-p queue_name Submits to queue (partition) designated by queue_name
-J job_name Job Name
-N total_nodes Required. Define the resources you need by specifying either:
(1) -N and -n; or
(2) -N and -ntasks-per-node.
-n total_tasks This is total MPI tasks in this job. See -N above for a good way to use this option. When using this option in a non-MPI job, it is usually best to set it to the same value as -N.
-ntasks-per-node
or
-tasks-per-node
tasks_per_node This is MPI tasks per node. See -N above for a good way to use this option. When using this option in a non-MPI job, it is usually best to set -ntasks-per-node to 1.
-t hh:mm:ss Required. Wall clock time for job.
-mail-type= begin, end, fail, or all Specify when user notifications are to be sent (one option per line).
-mail-user= email_address Specify the email address to use for notifications. Use with the -mail-type= flag above.
-o output_file Direct job standard output to output_file (without -e option error goes to this file)
-e error_file Direct job error output to error_file
-mem N/A Not available. If you attempt to use this option, the scheduler will not accept your job.