PBS Sample Job Scripts
From UF HPC Wiki
Contents |
PBS Sample Job Scripts
This is a summary of all the sample PBS job scripts available, click on the link for the application to see more information.
This is a long page, use the table of contents!
You should read (if you have not already) the Getting Started and Job Submission Queues pages before using/editing these scripts.
Please refer to the Sample Submission Script section of the wiki page of the application for more information on the script.
General
Run it on the Test Queue for a quick test of the application
#!/bin/bash # #PBS -r n #PBS -N testjob #PBS -o testjob.out #PBS -e testjob.err #PBS -q testq #PBS -l nodes=1:ppn=1:infiniband #PBS -l walltime=00:07:00 #
#! /bin/bash #PBS -r n #PBS -N testjob #PBS -o testjob.out #PBS -e testjob.err #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE #PBS -l walltime=01:00:00 #PBS -l pmem=100mb #PBS -l nodes=1:ppn=1:gige date hostname sleep 20 date
By Application
Amber
Amber :
#!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N AMBER
#PBS -o AMBER.out
#PBS -e AMBER.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job Configuration
##Job Resources
#PBS -l nodes=4:ppn=1
#PBS walltime=01:00:00
#PBS -l pmem=100mb
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
TESTsander="/apps/amber/9/intel/ompi/1.2.2/exe/sander.MPI"
if( $?TESTsander ) then
sander=$TESTsander
endif
cd /scratch/ufhpc/taylor/amber/jac
cat << EOF > mdin
short md, nve ensemble
&cntrl
ntx=7, irest=1,
ntc=2, ntf=2, tol=0.0000001,
nstlim=1000,
ntpr=100, ntwr=10000,
dt=0.001, vlimit=10.0,
cut=9.,
ntt=0, temp0=300.,
/
&ewald
nfft1=64,nfft2=64,nfft3=64,
skinnb=2.,
/
EOF
OUTPUT=bench.jac.out
$MPI_RUN -np $CPUS $sander -O -i mdin -c inpcrd.equil -o $OUTPUT < /dev/null
grep "Total time" $OUTPUT
mv $OUTPUT $OUTPUT.$MPI_THREADS
/bin/rm mdin restrt
AUTO3DEM
AUTO3DEM :
#!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N a3d
#PBS -o a3d.out
#PBS -e a3d.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job configuration
#PBS -V
##Job Resources
#PBS -l nodes=8:ppn=1:infiniband
#PBS -l pmem=100mb
#PBS -l walltime=01:00:00
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
setenv MPIRUN "$MPIRUN"
PATH=/apps/auto3dem/bin:$path
EXE=/apps/auto3dem/bin/auto3dem
INPUT=/scratch/ufhpc/taylor/auto3dem/AAV9/
cd $PBS_O_WORKDIR
auto3dem -ncpu=$CPUS -input=####_master
Blender
Blender :
#!/bin/bash # #PBS -r n ##Job settings #PBS -N tux #PBS -o tux.out #PBS -e tux.err #PBS -j oe #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE ##Job configuration ##Job reesources #PBS -l nodes=1:ppn=2 #PBS -l pmem=100mb #PBS -l walltime=01:00:00 EXE=/apps/blender/2.45/blender cd /home/jka/ $EXE -b Tux.blend -f 1 -x 1 -t 2
CMSSW
CMSSW :
#! /bin/bash
#
#PBS -r n
##Job settings
#PBS -N cmsRun
#PBS -o job.out
#PBS -e job.err
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job Configuration
##Job Resources
#PBS -l walltime=01:00:00
#PBS -l nodes=1:ppn=1
#PBS -l pmem=1000mb
# initialize environment for worker
export SCRAM_ARCH=slc4_ia32_gcc345
export OSG_APP=/scratch/ufhpc/osg/app
export VO_CMS_SW_DIR=${OSG_APP}/cmssoft/cms
export CMS_PATH=${VO_CMS_SW_DIR}
. ${CMS_PATH}/cmsset_default.sh;
echo "Job running on `hostname` at `date`"
# enter working area
cd /scratch/ufhpc/mschmitt/CMSSW_1_6_8/src
eval `scramv1 runtime -sh`
cmsRun FastSimulation/EventProducer/test/FamosProducer.cfg
Cnssolve
Cnssolve :
#!/bin/bash # #PBS -r n ##Job settings #PBS -N rmc #PBS -o rmc.out #PBS -e rmc.err #PBS -j oe #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE ##Job configuration #PBS -V ##Job resources #PBS -l nodes=1:ppn=1 #PBS -l pmem=100mb #PBS -l walltime=01:00:00 PATH=/apps/cnssolve:$path source /apps/cnssolve/cns_solve_1.2/cns_solve_env INPUT=$UFHPC_SCRATCH/$USER/cns cd $UFHPC_SCRATCH/$USER/cns cns_solve <generate.inp>generate.log
Dlpoly
Dlpoly :
#!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N test1
#PBS -o test.out
#PBS -e test.err
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job configuration
##Job resources
#PBS -l nodes=4:ppn=1
#PBS -l walltime=01:00:00
#PBS -l pmem=100mb
EXE=/apps/dlpoly/3.07/execute/DLPOLY.Y
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
cd /scratch/ufhpc/prescott/dlpoly/TEST1
pwd
which mpirun
echo Running dlpoly...
$MPIRUN -np $CPUS $EXE
echo "Done."
Dock
Dock :
#!/bin/bash
#
#PBS -r n
## Job settings
#PBS -N noflex1of3
#PBS -o noflex1of3.out
#PBS -e noflex1of3.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
## Job configuration
##Job resources
#PBS -l nodes=4:ppn=1
#PBS -l walltime=2:00:00
#PBS -l pmem=100mb
CPUS=`cat $PBS_NODEFILE | wc -l`
EXE="/apps/dock/61/dock6/bin/dock6.mpi"
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
# Execution directory
cd <YOUR_SCRATCH_DIR>/doc/my_dock_jobdir
which mpirun
echo Running $EXE
$MPIRUN -np $CPUS $EXE -i dock_no_flex.in -o nci_1of3_100_noflex_auto.out
Freesurfer
#!/bin/bash # #PBS -r n ##Job settings #PBS -N freesurfer #PBS -o dnet.out #PBS -e dnet.err #PBS -j oe #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE ##Job configuration ##Job resources #PBS -l nodes=1:ppn=1 #PBS -l walltime=01:00:00 #PBS -l pmem=100mb FREESURFER_HOME=/apps/freesurfer source $FREESURFER_HOME/SetUpFreeSurfer.sh EXE=/apps/freesurfer/bin/recon-all $EXE -s bert -all
Gaussian
Gaussian :
#!/bin/csh -f
#
#PBS -N Moderate
#PBS -o Moderate.out
#PBS -e Moderate.err
#PBS -j oe
#PBS -m abe
#PBS -r n
#PBS -M YOUR_MAIL_ADDRESS_HERE
#PBS -l walltime=400:00:00
#PBS -l nodes=1:ppn=4
#PBS -l pmem=900m
## Change your per-process memory request as needed
groups
setenv g03root /apps/gaussian
source $g03root/g03/bsd/g03.profile
setenv job gaus_inp
setenv GAUSS_SCRDIR ${UFHPC_SCRATCH}/${USER}/gaus1
setenv INPUT $job.com
setenv OUTPUT $job.log
# Your job will run here
# make sure your input files live here
cd $GAUSS_SCRDIR
g03 $INPUT
MPB
MPB :
#!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N test
#PBS -o test.out
#PBS -e test.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job configuration
##Job resources
#PBS -l nodes=4:ppn=1
#PBS -l walltime=01:00:00
#PBS -l pmem=100mb
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
cd /scratch/mri/jka
$MPIRUN -np $CPUS /apps/mpb/bin/mpb-mpi -v mpb.ctl > mpb.out
R
R :
#!/bin/bash # #PBS -r n ##Job settings #PBS -N TestOfR2 #PBS -o TestOfR2.out #PBS -e TestOfR2.err #PBS -j oe #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE ##Job configuration ##Job resources #PBS -l nodes=1:ppn=1 #PBS -l walltime=01:00:00 #PBS -l pmem=100mb EXE=/usr/bin/R SCRDIR=/scratch/ufhpc/$USER/$PBS_JOBNAME if [ ! -d $SCRDIR ]; then mkdir -p $SCRDIR fi cd $SCRDIR echo running R on `hostname -s` in `pwd` $EXE --vanilla < test.r > r2.out echo Done
Siesta
Siesta :
!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N SiestaJob
#PBS -o SiestaJob.out
#PBS -e SiestaJob.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job configuration
##Job resources
#PBS -l nodes=4:ppn=1
#PBS -l mem=100mb
#PBS -l walltime=01:00:00
EXE=/apps/siesta/2.0/ompi/1.2.2/siesta
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
echo MPIRUN = $MPIRUN
cd /home/taylor/siesta-2.0/cf3depo_5
rm -f ~/.ssh/environment
echo Running $EXE:t
$MPIRUN -np $CPUS $EXE < SiestaJob.fdf
echo "Done."
Stata
Stata :
#! /bin/bash # #PBS -r n #Job settings #PBS -N stata #PBS -o stata.out #PBS -e stata.err #PBS -m abe #PBS -M YOUR_MAIL_ADDRESS_HERE ##Job configuration ##Job resources #PBS -l nodes=1:ppn=1 #PBS -l walltime=01:00:00 #PBS -l pmem=100mb /apps/stata/stata10/stata -b do <stata input file>
VASP
VASP :
#!/bin/bash
#
#PBS -r n
##Job settings
#PBS -N Moderate
#PBS -o Moderate.out
#PBS -e Moderate.err
#PBS -j oe
#PBS -m abe
#PBS -M YOUR_MAIL_ADDRESS_HERE
##Job configuration
##Job resources
#PBS -l walltime=01:00:00
#PBS -l nodes=8:ppn=1
#PBS -l pmem=100mb
EXE=/apps/vasp/4.6.31/intel/bin/nebvasp-cd
CPUS=`cat $PBS_NODEFILE | wc -l`
if [ `/usr/local/sbin/IbEnabled` -gt 0 ] ; then
echo "Running on IB-enabled node set"
MPIRUN="mpirun --mca btl openib"
else
echo "Running on GigE-enabled node set"
MPIRUN="mpirun --mca btl ^udapl,openib --mca btl_tcp_if_include eth0"
fi
cd <YOUR_SCRATCH_DIR_HERE>/vasp/moderate
$MPIRUN -np $CPUS $EXE >& vasp.log
Other
Job Submission Scripts : this script is actually generating a PBS script from user input
#!/usr/bin/perl
if ($#ARGV != 1)
{
die "\nExecutable or parameter files missing! \n Usage: submitjobs.pl <executable file> <parameter file>\n";
}
print "Enter maximum wall time (HH:MM:SS): ";
$walltime = <STDIN>;
chop $walltime;
print "\n\n";
print "Enter maximum memory usage per node (ex. 600mb): ";
$memory = <STDIN>;
chop $memory;
print "\n\n";
foreach $i (0 .. $#ARGV) {
print $ARGV[$i] . "\n";
}
$executable_file=$ARGV[0];
$parameter_file=$ARGV[1];
#### THE FOLLOWING IS THE BASE NAME GIVEN TO YOUR PBS JOB ####
#### THE INDEX OF THE PARAMETER VALUE WILL BE APPENDED TO THIS NAME ####
#### TO DISTINGUISH JOBS ####
my $PBS_job_identifier=$ARGV[0];
print $PBS_job_identifier;
#### COMPILE C CODE TO FORM OUTPUT exe ####
#### system("pathcc -lm -o exe $directory/$source_file -O3")==0
#### or die "failed compilation";
open(PARAMETERS, $parameter_file) || die "Could not open parameters file\n";
$directory=`pwd`;
chop $directory;
print $pwd . "\n";
### Construct the pbs scripts and submit the jobs
$i=1;
while($param=<PARAMETERS>)
{
print $param;
$PBS_jobname="$PBS_job_identifier-".$i;
$i++;
print "$PBS_jobname\n";
open(PBS_SCRIPT,">pbs_script");
print PBS_SCRIPT "#!/bin/bash\n";
print PBS_SCRIPT "##Generated with the PBS script generator...\n";
print PBS_SCRIPT "#PBS -r n\n\n";
print PBS_SCRIPT "##Job settings\n"
print PBS_SCRIPT "#PBS -N $PBS_jobname\n";
print PBS_SCRIPT "#PBS -j oe\n";
#print PBS_SCRIPT "#PBS -m abe\n";
# If you enable the mailing option, please be
# sure to replace the username (and possibly the domain name) below
#print PBS_SCRIPT "#PBS -M YOUR_MAIL_ADDRESS_HERE\n";
print PBS_SCRIPT "\n";
print PBS_SCRIPT "##Job configuration\n\n";
print PBS_SCRIPT "##Job resources\n";
print PBS_SCRIPT "#PBS -l walltime=$walltime\n";
print PBS_SCRIPT "#PBS -l pmem=$memory\n";
print PBS_SCRIPT "#PBS -l nodes=1:ppn=1:gige\n";
print PBS_SCRIPT $directory . "/" . $executable_file . " ";
print PBS_SCRIPT $param . "\n";
system("qsub pbs_script")==0
or die "failed submitting PBS job \n";
#### GIVE THE JOB A SECOND TO GET SUBMITTED ####
sleep(1);
print "\n";
}
