In this example we will run paup with the ML_analysis.nex sample file provided on the paup sample nexus files page.
After logging into the cluster download the example file with the command:
-bash-4.1$ wget http://paup.csit.fsu.edu/data/ML_analysis.nex --2014-03-11 13:08:16-- http://paup.csit.fsu.edu/data/ML_analysis.nex Resolving paup.csit.fsu.edu... 144.174.50.3 Connecting to paup.csit.fsu.edu|144.174.50.3|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2990 (2.9K) [text/plain] Saving to: “ML_analysis.nex” 100%[==============================================================>] 2,990 --.-K/s in 0s 2014-03-11 13:08:17 (70.7 MB/s) - “ML_analysis.nex” saved [2990/2990]
Creating the job script
Using a text editor – examples include vim and nano – create your shell script with the filename: ML_analysis.sh
and the following contents (the colours are only used for illistration purposes below):
#!/bin/bash
#
# Checkpointing is to be done on a job at pbs_mom shutdown.
#
#PBS -c s
#
# Merge standard output and standard error streams into the named file.
#
#PBS -j oe
#
# Set the name of the job
#
#PBS -N ML_analysis
#
# Advise the scheduler that the job requires one cpu (ppn) from one node.
#
#PBS -l nodes=1:ppn=1
#
# Advise the scheduler about the amount of physical memory required.
# kb for kilobytes, mb for megabytes, gb for gigabytes.
#
#PBS -l pmem=5gb
#
# Advise the scheduler that this job will have completed within 10 minutes.
#
#PBS -l walltime=00:10:00
#
# Send mail at batch job abort/exit to the Email address provided.
#
#PBS -m ae
#PBS -M your.name@jcu.edu.auncpu=`wc -l $PBS_NODEFILE | awk '{print $1}'`
echo "------------------------------------------------------"
echo " This job is allocated "$ncpu" CPU cores on "
cat $PBS_NODEFILE | uniq
echo "------------------------------------------------------"
echo "PBS: Submitted to $PBS_QUEUE@$PBS_O_HOST"
echo "PBS: Working directory is $PBS_O_WORKDIR"
echo "PBS: Job identifier is $PBS_JOBID"
echo "PBS: Job name is $PBS_JOBNAME"
echo "------------------------------------------------------"
cd $PBS_O_WORKDIR
source /etc/profile.d/modules.sh
module load paup
paup -n ML_analysis.nex
Legand:
- The very first line of the script file is the Shebang, the shebang must always be the first line.
The second section contains the PBS directives. For more information on PBS directives please see the HPC PBSPro script files page.
- The third section outputs information about the job, and is only included as an example of what can be done.
- The fourth section contains the commands that are actually run in the job. In this case we are using a bash shell.
Submitting the Job - qsub
The final step is to submit the job to the job scheduler:
-bash-4.1$ qsub ML_analysis.sh 148122.jobmgr.hpc.jcu.edu.au
Monitoring the Job - qstat
Once the job has been submitted you can monitor its progress by using the qstat command.
When you first submit your job it is placed into the job queue, and its status column contains Q
, meaning the job is in the queue:
-bash-4.1$ qstat 148122.jobmgr.hpc.jcu.edu.au Job ID Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 148122.jobmgr ML_analysis jcxxxxxxx 0 Q normal
Once your job starts running its status changes to R
:
-bash-4.1$ qstat 148122.jobmgr.hpc.jcu.edu.au Job ID Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 148122.jobmgr ML_analysis jcxxxxx 0 R normal
Deleting a job - qdel
If you need to your job you can use the qdel command
-bash-4.1$ qdel 148122.jobmgr.hpc.jcu.edu.au
Your job's Output
Different programs have different ways of outputting their data. If they output data directly to a file then your results will be in whatever file you specified. If, however, the results are printed out to the standard out (as is the case for this example) then PBS captures them into a file for you.