Sample Scripts: Difference between revisions

From Research Computing Center Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(30 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:sapelo2]]


===Sample batch job submission scripts on zcluster===
[[Sample batch job submission scripts on Sapelo2]]


In all these sample scripts, the ''working_directory'' refers to your working directory. For example, your working directory could be a subdirectory called projectA in your home directory.
[[Sample batch job submission scripts on the teaching cluster]]
'''Notes about the job submission script'''
* You can use the pound sign # to start comment lines in your script, but # cannot be immediately followed by a dollar sign $. The combination #$ is reserved to indicate a qsub option defined in the script.
* The job submission script does not need to have executable permission.
 
====To run a serial job====
 
<pre class="gscript">
#!/bin/bash
cd working_directory
time ./myprog < myin > myout
</pre>
 
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:
<pre class="gscript">
#!/bin/bash
cd ${HOME}/projectA
time ./myprog < myin > myout
</pre>
 
If the job is submitted from within the working directory, you can use the following sample script:
<pre class="gscript">
#!/bin/bash
cd `pwd`
time ./myprog < myin > myout
</pre>
 
====To run an R program====
Sample script to run an R program called program.R:
<pre class="gscript">
#!/bin/bash
cd `pwd`
time /usr/local/R/2.15.2/bin/R CMD BATCH program.R
</pre>
 
====To run a Matlab program====
Sample script to run a Matlab program called plotsin.m:
<pre class="gscript">
#!/bin/bash
cd `pwd`
matlab -nodisplay < plotsin.m > matlab.out
exit
</pre>
 
===Parallel Jobs using MPI libraries===
 
<u>To run a parallel MPI job using MPICH/PGI</u>
 
<pre class="gscript">
#!/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
</pre>
 
Note that lines 3, 4, and 5 in this script are optional.
 
<u>To run a parallel MPI job using the default MPICH2 (PGI) compilers.</u> For example, if you compiled the code with mpicc or mpif90, etc, without full path.
 
<pre class="gscript">
#!/bin/bash
cd working_directory
export LD_LIBRARY_PATH=/usr/local/mpich2/1.4.1p1/pgi123/lib:${LD_LIBRARY_PATH}
mpirun -np $NSLOTS ./myprog
</pre>
 
<u>To run a parallel MPI job using MPICH2 and e.g. GNU 4.4.4 compilers</u>
 
<pre class="gscript">
#!/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
</pre>
 
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.
 
<u>To run a parallel MPI job using OpenMPI 1.4.4 and e.g. GNU 4.1.2 compilers</u>
 
<pre class="gscript">
#!/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
</pre>
 
<u>To run a parallel MPI job using OpenMPI 1.6.2 and e.g. GNU 4.7.1 compilers</u>
 
<pre class="gscript">
#!/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
</pre>
 
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.
 
<u>To run a parallel MPI job using MVAPICH2/GNU over Infiniband</u>
 
<pre class="gscript">
#!/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
</pre>
 
===To run a shared memory job using OpenMP===
Sample script to run a program that uses 4 OpenMP threads:
<pre class="gscript">
#!/bin/bash
cd working_directory
export OMP_NUM_THREADS=4
time ./myprog
</pre>

Latest revision as of 13:14, 7 January 2021