...
id | PBS |
---|
...
label | Single 1-CPU Job |
---|
This example runs PAUP on the input file input.nex
that resides in the current working directory. A file (here we'll name it pbsjob
) is created with the contents:
...
Important: Most software will only consume 1 CPU core - e.g., requesting 8 CPU cores for a PAUP job blocks other people using the unused 7 CPU cores. Example 1 below would likely be the most users should be basing their job scripts from. If in doubt, contact HPRC staff.
For more information about PBSPro please click to see guide. For a brief description of PBS directives provided in examples below, see the "Brief Explanation of PBS directive used in examples above" section immediately following the final example PBS script.
HPC staff should be able to assist researchers needing help with PBS scripts.
Singularity Example
The following PBS script requests 1 CPU core, 2GB of memory, and 24 hours of walltime
No Format |
---|
#!/bin/bash #PBS -c s #PBS -j oe #PBS -m ae #PBS -N jobnameJobName1 #PBS -M jc123456@jcuFIRSTNAME.LASTNAME@jcu.edu.au #PBS -l walltime=200024:00:00 #PBS -l select=1:ncpus=1:mem=2gb echo "------------------------------------------------------" echo " This job is allocated 1 cpu on " cat $PBS_NODEFILE echo "------------------------------------------------------" echo "PBS: Submitted to $PBS_QUEUE@$PBS_O_HOST" echo "PBS: cd $PBS_O_WORKDIR # Add this to all of your scripts shopt -s expand_aliases source /etc/profile.d/modules.sh # Output some useful information about # the job we are running echo "Job identifier is $PBS_JOBID" echo "Working directory is $PBS_O_WORKDIR" # Load the container we want to use # It is a good idea to always specify the version number module load R/4.1.2u1 # Run your code R ... # Replace ... with your arguments & options. |
Module Examples
Section | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Card | Single 1-CPU Job | Single 1-CPU Job | |||||||||||||||||||||||||||||||
Card | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
Card | Multiple 1-CPU Jobs | Multiple 1-CPU Jobs | |||||||||||||||||||||||||||||||
Card | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
Card | MPI/PVM/OpenMP Jobs | MPI/PVM/OpenMP Jobs | |||||||||||||||||||||||||||||||
Deck of Cards | |||||||||||||||||||||||||||||||||
PBS | PBS
|
To submit the job for execution on a HPRC compute node simply enter the command:
No Format |
---|
qsub pbsjob |
If you know this job will require more than 4GB but less than 8GB of RAM, you could use the command:
No Format |
---|
qsub -l nodes=1:ppn=2 pbsjob |
If you know this job will require more than 8GB but less than 16GB of RAM, you could use the command:
No Format |
---|
qsub -l nodes=1:ppn=8 pbsjob |
The reason for the special cases (latter two) is to guarantee memory resources for your job. If memory on a node is overallocated, swap will be used. Job(s) that are actively using swap (disk) to simulate memory could take more than 1000 times longer to finish than a job running on dedicated memory. In most cases, this will mean your job will never finish.
|
Example 5:
The following script is a rework of Example 2 to use the /fast/tmp
filesystem for a hyperthetical workflow that is I/O intensive. This example assumes 1 output file per job.
Note |
---|
Usage of /fast/tmp Please make sure you first create an place all files in a folder that matches your jc number eg: jcXXXXXXXX |
No Format |
---|
#!/bin/bash
#PBS -j oe
#PBS -m ae
#PBS -N JobName2
#PBS -M FIRSTNAME.LASTNAME@my.jcu.edu.au
#PBS -l walltime=3:00:00
#PBS -l select=1:ncpus=8:mem=32gb
cd $PBS_O_WORKDIR
shopt -s expand_aliases
source /etc/profile.d/modules.sh
echo "Job identifier is $PBS_JOBID"
echo "Working directory is $PBS_O_WORKDIR"
mkdir -p /fast/tmp/jc012345/myjobs
cp -a myjob1.m myjob2.m myjob3.m myjob4.m myjob5.m myjob6.m myjob7.m myjob8.m /fast/tmp/jc012345/myjobs/
pushd /fast/tmp/jc012345/myjobs
module load matlab
matlab -r myjob1 &
matlab -r myjob2 &
matlab -r myjob3 &
matlab -r myjob4 &
matlab -r myjob5 &
matlab -r myjob6 &
matlab -r myjob7 &
matlab -r myjob8 &
wait # Wait for background jobs to finish.
cp -a out1.mat out2.mat out3.mat out4.mat out5.mat out6.mat out7.mat out8.mat $PBS_O_WORKDIR/
popd
rm -rf /fast/tmp/jc012345/myjobs |
Consider the possibility that you may be running more than one workflow at any given time. Using subdirectories is a good way of segregating workflows (at a storage layer).
Brief Explanation of PBS directive used in examples above
Directive | Description of impact |
---|---|
#PBS -j oe | Merge STDOUT & STDERR streams into a single file |
#PBS -m ae | Send an Email upon job abort/exit. |
#PBS -N ... | Assign a meaningful name to the job (replace ... with 1 "word" - e.g., test_job). |
| Email address that PBSPro will use to provide job information (if desired) |
#PBS -l walltime=HH:MM:SS | Amount of clock time that your job is likely to required. |
#PBS -l select=1:ncpus=X:mem=Ygb | Request 1 chunk of "X CPU cores" & "Y GB of RAM". The "select=1:" is not really required as it is the default. Due to JCU cluster size, requests for more than 1 chunk should/will be rejected. |
Brief Details on some extra PBS/Torque directives
Directive(s) | Description of purpose |
---|---|
| Sets the working directory for you job to <PATH>. |
| Explicit specification of file that will hold the standard output stream from you job. |
| Export environment variables to the batch job |
For full details on directives that can be used, use "man qsub
" on a HPC login node or look at online documentation for Torque.
PBS/Torque Variables
The following variables can be useful within your PBS job script. Some are present in the examples above.
Variable | Description |
---|---|
| Job name specified by the user |
| Working directory from which the job was submitted |
| Home directory of user submitting the job |
| Name of user submitting the job |
| Script shell |
| Unique PBS job id |
| Host on which job script is running |
| Name of the job queue |
| File containing line delimited list on nodes allocated to the job (may be required for MPI jobs). |
| Path variable used to locate executables within the job script |