Sample Scripts

From Research Computing Center Wiki
Revision as of 14:44, 11 February 2013 by Shtsai (talk | contribs)
Jump to navigation Jump to search

Sample batch job submission scripts on zcluster

To run a serial job

#!/bin/bash
cd working_directory
time ./myprog < myin > myout

Note that the 'time' command included in the sample script above is optional (this command measures the amount of time it takes to run an executable). Entering a standard input file (myin) and standard output file (myout) is only necessary if your executable requires input from standard input and if it outputs data to standard output.

You can specify the working_directory as in the example below:

#!/bin/bash
cd ${HOME}/projectA
time ./myprog < myin > myout

If the job is submitted from within the working directory, you can use the following sample script:

#!/bin/bash
cd `pwd`
time ./myprog < myin > myout

To run R

Sample script to run an R program called program.R:

#!/bin/bash
cd `pwd`
time /usr/local/R/2.15.2/bin/R CMD BATCH program.R

To run Matlab

Sample script to run a Matlab program called plotsin.m:

#!/bin/bash
cd `pwd`
matlab -nodisplay < plotsin.m > matlab.out
exit

Parallel Jobs using MPI libraries

To run a parallel MPI job using MPICH/PGI

#!/bin/bash
cd working_directory
echo "Got $NSLOTS processors."
echo "Machines:"
cat $TMPDIR/machines
/usr/local/pgi/linux86-64/2012/mpi/mpich/bin/mpirun -np $NSLOTS -machinefile $TMPDIR/machines ./myprog

Note that lines 3, 4, and 5 in this script are optional.

To run a parallel MPI job using the default MPICH2 (PGI) compilers. For example, if you compiled the code with mpicc or mpif90, etc, without full path.

#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/mpich2/1.4.1p1/pgi123/lib:${LD_LIBRARY_PATH}
mpirun -np $NSLOTS ./myprog

To run a parallel MPI job using MPICH2 and e.g. GNU 4.4.4 compilers

#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/mpich2/1.4.1p1/gcc_4.4.4/lib:${LD_LIBRARY_PATH}
/usr/local/mpich2/1.4.1p1/gcc_4.4.4/bin/mpirun -np $NSLOTS ./myprog

Note that with MPICH2 it is not necessary to include the -machinefile option when submitting the job to a batch queue. When using other MPICH2 compilations, such as for PGI compilers, users need to adjust the path to the libraries and to mpirun appropriately in the script.

To run a parallel MPI job using OpenMPI 1.4.4 and e.g. GNU 4.1.2 compilers

#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/openmpi/1.4.4/gcc412/lib:${LD_LIBRARY_PATH}
/usr/local/openmpi/1.4.4/gcc412/bin/mpirun ––mca btl "tcp,self" -np $NSLOTS ./myprog

To run a parallel MPI job using OpenMPI 1.6.2 and e.g. GNU 4.7.1 compilers

#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/gcc/4.7.1/lib64:/usr/local/openmpi/1.6.2/gcc471/lib:${LD_LIBRARY_PATH}
/usr/local/openmpi/1.6.2/gcc471/bin/mpirun ––mca btl "tcp,self" -np $NSLOTS ./myprog

Note that with OpenMPI you can use the mpirun command and there is no need to include the -machinefile option. When using other OpenMPI compilations, such as the one for PGI compilers, users need to adjust the path to the libraries and to mpirun appropriately in the script. To use OpenMPI over Infiniband, remove the mpirun option

––mca btl "tcp,self"

from the script.

To run a parallel MPI job using MVAPICH2/GNU over Infiniband

#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/mvapich2/1.8/gcc444/lib:${LD_LIBRARY_PATH}
/usr/local/mvapich2/1.8/gcc444/bin/mpirun -np $NSLOTS ./myprog

To run a shared memory job using OpenMP

Sample script to run a program that uses 4 OpenMP threads:

#!/bin/bash
cd working_directory
export OMP_NUM_THREADS=4
time ./myprog