Difference between revisions of "Brief Introduction to HPC Computing"

From HPC users
Jump to navigationJump to search
Line 66: Line 66:
cp -a ./my_data $HOME/wmwr/my_examples/tempdir/
cp -a ./my_data $HOME/wmwr/my_examples/tempdir/
   </nowiki>
   </nowiki>
Submitting the script via
  qsub myProg_tempdir.sge
enqueues the respective job, having jobId 703895. After successful termination of the job, the folder <tt>my_data</tt> appears in
the working directory from which the job was originally submitted from. Also, the two job status files <tt>tmpdir_test.e703895</tt> and <tt>tmpdir_test.o703895</tt> where created
that might contain further details associated with the job. The latter file should contain the name of the host on which the job actually ran and the name of the temporal directory. And indeed,
<tt>cat tmpdir_test.o703895</tt>  reveals the file content
  HOSTNAME =  mpcs002
  TMPDIR  =  /scratch/703895.1.mpc_std_shrt.q
Further, the file <tt>my_data/myData.out</tt> contains the line
 
as expected.

Revision as of 15:40, 14 May 2013

A brief introduction to the usage of the HPC facilities, targeted at new and unexperienced HPC users is given below. The introduction is based on various minimal examples that illustrate how to compile serial and parallel programs as well as how to submit and monitor actual jobs using SGE.

A simple serial program

write/compile simple non-parallel program

where and how to compile

how to include libraries

submit/monitor jobs

specifying resources

single jobs

job arrays

basic error-tracking

A simple parallel program

compile simple parallel program

example using openMpi

example using intel mph

submit/monitor jobs

specify resources

basic error-tracking

Misc

Importance of specifying reasonable resources

how to use local storage for I/O intense serial jobs (or parallel jobs that run on a single host)

A proper job submission script, here called myProg_tempdir.sge, that takes care of creating the folder my_data needed by the program myExample_tempdir in order to store its output in a temporal directory on the executing host reads

 
#!/bin/bash

####### which shell to use
#$ -S /bin/bash

####### change to directory where job was submitted from
#$ -cwd

####### maximum walltime of the job (hh:mm:ss)
#$ -l h_rt=0:10:0

####### memory per job slot
#$ -l h_vmem=100M

####### since working with local storage, no need to request disk space

####### name of the job
#$ -N tmpdir_test

####### change current working directory to the local /scratch/<jobId>.<x>.<qInst>
####### directory, available as TMPDIR on the executing host with HOSTNAME
cd $TMPDIR

####### write details to <jobName>.o<jobId> output file
echo "HOSTNAME = " $HOSTNAME
echo "TMPDIR   = " $TMPDIR

####### create output directory on executing host (parent folder is TMPDIR)
mkdir my_data

####### run program
$HOME/wmwr/my_examples/tempdir_example/myExample_tempdir

####### copy the output to the directory the job was submitted from
cp -a ./my_data $HOME/wmwr/my_examples/tempdir/
  

Submitting the script via

 qsub myProg_tempdir.sge

enqueues the respective job, having jobId 703895. After successful termination of the job, the folder my_data appears in the working directory from which the job was originally submitted from. Also, the two job status files tmpdir_test.e703895 and tmpdir_test.o703895 where created that might contain further details associated with the job. The latter file should contain the name of the host on which the job actually ran and the name of the temporal directory. And indeed, cat tmpdir_test.o703895 reveals the file content

 HOSTNAME =  mpcs002
 TMPDIR   =  /scratch/703895.1.mpc_std_shrt.q

Further, the file my_data/myData.out contains the line

as expected.