Template file for Sun Grid Engine (SGE) job submissions
#!/bin/bash -l | |
# template.qsub - Template file for Sun Grid Engine (SGE) job submissions | |
# Andrés Bretón, http://andresbreton.com | |
# Template from https://gist.github.com/bretonics/1dc5d0926aefa7787ebf48a0bad5316b | |
#------------------------------------------------------------------------------- | |
# ENVIRONMENTAL VARIABLES AVAILABLE | |
# JOB_ID Current job ID | |
# JOB_NAME Current job name | |
# NSLOTS The number of slots (threads or processors) requested by a job | |
# HOSTNAME Name of execution host | |
# SGE_TASK_ID Array Job task index number | |
# SGE_TASK_STEPSIZE The step size of the array job specification | |
# SGE_TASK_FIRST The index number of the first array job task | |
# SGE_TASK_LAST The index number of the last array job task | |
# TMPDIR The absolute path to the job's temporary working directory | |
#------------------------------------------------------------------------------- | |
# COMPUTING DIRECTIVES | |
# Specify hard time limit for the job | |
# The job will be aborted if it runs longer than this time | |
# The default time is 12 hours | |
#$ -l h_rt=24:00:00 | |
# Memory | |
# Request a node with at least 32 of memory (4 cores x 8GB per core = 32GB total) | |
#$ -l mem_total=32G # Request a node that has at least 16G of total memory | |
#$ -l mem_per_core=8G # Request a node with at least 8 GB of memory per core | |
# Request a parallel environment with four cores | |
#$ -pe omp 4 | |
# Request MPI jobs | |
# The SCC has 2 sets of nodes dedicated to run MPI jobs | |
# One set has 16-core nodes with 128 GB each | |
# The other set of nodes has 28-core nodes with 256 GB each | |
#$ -pe mpi_28_tasks_per_node 224 # 8 nodes with 28 core each | |
# Request GPU jobs | |
#$ -pe omp 4 # Request 4 CPUs | |
# Request 1 GPU (the number of GPUs needed should be divided by the number of CPUs requested above) | |
#$ -l gpus=0.25 | |
# Specify the minimum GPU compute capability | |
#$ -l gpu_c=3.5 | |
# Request my job to run on Buy-in Compute group hardware my_project has access to | |
#$ -l buyin | |
#------------------------------------------------------------------------------- | |
# ACTION DIRECTIVES | |
# Set SCC project | |
#$ -P project_name | |
# Job name | |
#$ -N job_name | |
# Stdout output | |
#$ -o "${JOB_NAME}/${JOB_NAME}_stdout.qlog" | |
# Stderr output | |
#$ -e "${JOB_NAME}/${JOB_NAME}_stderr.qlog" | |
# Merge the error and output streams into a single file | |
#$ -j y | |
# Specify the output file name | |
#$ -o "${JOB_NAME}/$JOB_NAME.qlog" | |
# Send an email (by default no email is sent). The possible values are - | |
# job begins (b), ends (e), is aborted (a), is suspended (s), or never (n) – default | |
#$ -m beasn | |
# Email adress to send email | |
#$ -M user_email | |
# All current environment variables should be exported to the batch job | |
#$ -V | |
# Set the runtime environment variable env to value | |
#$ -v env=value | |
# Setup job dependency list | |
# job_list is a comma separated list of job ids and/or job names which must complete before this job can run | |
#$ -hold_jid job_list | |
# Run in current directory | |
#$ -cwd | |
#------------------------------------------------------------------------------- | |
# JOB | |
# Load modules | |
modules=() | |
module load ${modules[@]} | |
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# Save environment to file | |
env > "${JOB_NAME}/${JOB_NAME}.env" | |
# Keep track of information related to the current job | |
echo "# ================================================================================" | |
echo "# JOB NAME: $JOB_NAME" | |
echo "# USER: $USER" | |
echo "# PWD: $(pwd)" | |
echo "# HOST: $HOSTNAME" | |
echo "# JOB ID: $JOB_ID" | |
echo "# TASK ID: $SGE_TASK_ID" | |
echo "# START: $(date)" | |
printf "\n\n# " | |
module list | |
echo "# ================================================================================" | |
echo "" | |
echo "" | |
echo "" | |
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# CALLS | |
cmd="" | |
echo "#--------------------------------------------------------------------------------" | |
echo "# Running :" | |
echo "# $cmd" | |
echo "#--------------------------------------------------------------------------------" | |
echo "" | |
echo "" | |
$cmd | |
echo "# ================================================================================" | |
echo "" | |
echo "" | |
cmd="" | |
echo "#--------------------------------------------------------------------------------" | |
echo "# Running :" | |
echo "# $cmd" | |
echo "#--------------------------------------------------------------------------------" | |
echo "" | |
echo "" | |
$cmd | |
echo "# ================================================================================" | |
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
# End job message | |
echo "" | |
echo "" | |
echo "" | |
echo "# ================================================================================" | |
echo "# End: $(date)" | |
echo "# User: $USER" | |
echo "# Cores/Threads: $NSLOTS" | |
echo "# Temporary Directory: $TMPDIR" | |
echo "# ================================================================================" | |
echo "" | |
echo "" | |
echo "" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment