parallel.pbs
Example Parallel job
You will need to replace items marked with *asterisks*
parallel.pbs:
#!/bin/sh -f
###############################################################
# #
# Bourne shell script for submitting a serial job to the #
# PBS queue using the qsub command. #
# #
###############################################################
# Remarks: A line beginning with # is a comment.
# A line beginning with #PBS is a PBS directive.
# PBS directives must come first; any directives
# after the first executable statement are ignored.
#
##########################
# #
# The PBS directives #
# #
##########################
# Set the name of the job (up to 15 characters,
# no blank spaces, start with alphanumeric character)
#PBS -N *JobName*
# By default, the standard output and error streams are sent
# to files in the current working directory with names:
# job_name.osequence_number <- output stream
# job_name.esequence_number <- error stream
# where job_name is the name of the job and sequence_number
# is the job number assigned when the job is submitted.
# Use the directives below to change the files to which the
# standard output and error streams are sent.
# #PBS -o stdout_file
# #PBS -e stderr_file
# The directive below directs that the standard output and
# error streams are to be merged, intermixed, as standard
# output.
#PBS -j oe
# Specify the maximum cpu and wall clock time. The wall
# clock time should take possible queue waiting time into
# account. Format: hhhh:mm:ss hours:minutes:seconds
# Be sure to specify a reasonable value here.
# If the job does not finish by the time reached,
# the job is terminated.
#PBS -l cput=6:00:00
#PBS -l walltime=6:00:00
# Specify the queue. The CSE PBS clusers currently have the following queues:
# "inti", and "surya". Inti is the 64bit Linux cluster and Surya is the
# Solaris cluster. Jobs submitted to these queues
# will run in cpu-dedicated mode; if all cpu's assigned to the
# queue are occupied with a job, then new jobs are queued and will
# not run until a cpu is freed up. You should take this waiting
# time into account when setting "walltime".
#PBS -q *inti*
# Specify the maximum amount of physical memory required.
# kb for kilobytes, mb for megabytes, gb for gigabytes.
# Take some care in setting this value. Setting it too large
# can result in your job waiting in the queue for sufficient
# resources to become available. Not usually needed as all nodes have
# the same resources.
# #PBS -l mem=512mb
# PBS can send informative email messages to you about the
# status of your job. Specify a string which consists of
# either the single character "n" (no mail), or one or more
# of the characters "a" (send mail when job is aborted),
# "b" (send mail when job begins), and "e" (send mail when
# job terminates). The default is "a" if not specified.
# You should also specify the email address to which the
# message should be send via the -M option.
# #PBS -m abe
# #PBS -m ae
#PBS -M *user_email_address*
# Declare the time after which the job is eligible for execution.
# If you wish the job to be immediately eligible for execution,
# comment out this directive. If you wish to run at some time in
# future, the date-time argument format is
# [DD]hhmm
# If the day DD is not specified, it will default to today if the
# time hhmm is in the future, otherwise, it defaults to tomorrow.
# If the day DD is specified as in the future, it defaults to the
# current month, otherwise, it defaults to next month.
# #PBS -a 2215 commented out
# Specify the number of nodes requested and the
# number of processors per node.
# In this case 4 nodes with 1 processor per node.
# Both Surya and Inti have 2 processors per node.
#PBS -l nodes=4:ppn=1
# Define the interval at which the job will be checkpointed,
# if checkpointing is desired, in terms of an integer number
# of minutes of CPU time.
# #PBS -c c=2
# Join the Error and the output into one file.
# If this is left out you will get two files a <jobname>.o<jobnumber> and
# a <jobname>.e<jobnumber>
#
#PBS -j oe
#
##########################################
# #
# Output some useful job information. #
# #
##########################################
echo ------------------------------------------------------
echo -n 'Job is running on node '; cat $PBS_NODEFILE
echo ------------------------------------------------------
echo PBS: qsub is running on $PBS_O_HOST
echo PBS: originating queue is $PBS_O_QUEUE
echo PBS: executing queue is $PBS_QUEUE
echo PBS: working directory is $PBS_O_WORKDIR
echo PBS: execution mode is $PBS_ENVIRONMENT
echo PBS: job identifier is $PBS_JOBID
echo PBS: job name is $PBS_JOBNAME
echo PBS: node file is $PBS_NODEFILE
echo PBS: current home directory is $PBS_O_HOME
echo PBS: PATH = $PBS_O_PATH
echo ------------------------------------------------------
# Change directories to the directory we submitted the job from
#
cd $PBS_O_WORKDIR
#
#
# Get number of nodes allocated (using the magic shell script)
#
NO_OF_NODES=`cat $PBS_NODEFILE | egrep -v '^#'\|'^$' | wc -l | awk '{print $1}'`
############################################################
# #
# Execute the run. Do not run in the background. #
# #
############################################################
runprogram()
{
*/usr/local/mpich/bin/mpirun -machinefile $PBS_NODEFILE -np $NO_OF_NODES hw4 1000
000000*
}
##################################################
# #
# program execution #
# #
##################################################
runprogram
echo PBS: End Time is `date`
exit


