⚠️ Only UCSF P1-P2 data ("research using public data sets") is allowed on the Wynton cluster as of 2026-01-30.
⚠️ Please note that the Wynton HPC service is being phased out as part of the Wynton Transition project and is scheduled to retire in early March, 2027. New research projects should generally use the newer FAC and CoreHPC environment instead. ⚠️
Some of the environment variables set by the scheduler and available to a job at runtime:
HOSTNAME (string) - the name of the machine where the job is launchedJOB_ID (integer) - a unique job identifierJOB_NAME (string) - the name of the job as it appears on the queueNHOSTS (integer) - the number of hosts for a parallel job (default: 1)NSLOTS (integer) - the number of slots allocated for a parallel job (default: 1)PE_HOSTFILE (string) - the absolute path of a file with rows of machines allocated to a parallel jobSGE_GPU (comma-separated integers or undefined) - set of GPU core indices allocated to a GPU job (default: undefined)SGE_TASK_ID (integer or undefined) - subtask identifier for array jobs (default: undefined)TMPDIR (string) - the absolute path to a job-specific temporary directory (local on the compute node and owned by $USER) that is automatically removed when the job finishesTo see all environment variable available to a job, we can submit a quick job that outputs all environment variables and their values sorted by name;
$ cd ~/test/
$ echo "env | sort" | qsub -cwd -j yes -pe smp 4 -l h_rt=00:01:00 -N envvar
Your job 453717 ("envvar") has been submitted
When finished, check the content of the job output file:
$ grep -E "(HOSTNAME|PWD|TMPDIR|NSLOTS|NHOSTS|SGE_|JOB_|PE_)" envvar.o453717
HOSTNAME=qb3-id14
JOB_ID=453717
JOB_NAME=envvar
JOB_SCRIPT=/var/spool/sge/wynton/qb3-id14/job_scripts/453717
NHOSTS=1
NSLOTS=4
PE_HOSTFILE=/var/spool/sge/wynton/qb3-id14/active_jobs/453717.1/pe_hostfile
PWD=/wynton/home/boblab/alice/test
SGE_ACCOUNT=sge
SGE_ARCH=lx-amd64
SGE_BINARY_PATH=/opt/sge/bin/lx-amd64
SGE_CELL=wynton
SGE_CLUSTER_NAME=wynton_cluster
SGE_CWD_PATH=/wynton/home/boblab/alice/test
SGE_JOB_SPOOL_DIR=/var/spool/sge/wynton/qb3-id14/active_jobs/453717.1
SGE_O_HOME=/wynton/home/boblab/alice
SGE_O_HOST=dev3
SGE_O_LOGNAME=alice
SGE_O_MAIL=/var/spool/mail/alice
SGE_O_PATH=/opt/sge/bin:/opt/sge/bin/lx-amd64:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/wynton/home/boblab/alice/.local/bin:/wynton/home/boblab/alice/bin
SGE_O_SHELL=/bin/bash
SGE_O_WORKDIR=/wynton/home/boblab/alice/test
SGE_ROOT=/opt/sge
SGE_RSH_COMMAND=builtin
SGE_STDERR_PATH=/wynton/home/boblab/alice/test/envvar.o453717
SGE_STDIN_PATH=/dev/null
SGE_STDOUT_PATH=/wynton/home/boblab/alice/test/envvar.o453717
SGE_TASK_FIRST=undefined
SGE_TASK_ID=undefined
SGE_TASK_LAST=undefined
SGE_TASK_STEPSIZE=undefined
TMPDIR=/scratch/453717.1.long.q
Here are some examples of how to get the value of environment variable NSLOTS in some of the most popular programming languages. The value is assigned to a local variable nslots, and if not set, 1 is used as the default value. All examples coerce the value to a numeric value and then outputs a message with the value.
nslots=${NSLOTS:-1}
echo "Number of slots available: ${nslots}"
nslots = getenv('NSLOTS'); % env var is always a 'char'
if (isempty(nslots)) nslots = '1'; end % default value
nslots = str2num(nslots); % coerce to 'double'
fprintf('Number of slots available: %d\n', nslots);
See also the how-to page on ‘Work with MATLAB’.
import os
nslots = os.getenv('NSLOTS', '1') # env var is always a 'str'
nslots = int(nslots) # coerce to an 'int'
print('Number of slots available: ' + nslots)
nslots <- Sys.getenv("NSLOTS", "1") # env var is always a 'character'
nslots <- as.integer(nslots) # coerce to an 'integer'
message("Number of slots available: ", nslots)
See also the how-to page on ‘Work with R’.
nslots = ENV["NSLOTS"] || "1" # env var is always a 'String'
nslots = nslots.to_i # coerce to 'Integer'
puts "Number of slots available: #{nslots}"