| 1 |
#!/bin/bash |
| 2 |
# |
| 3 |
#PBS -q four-twelve |
| 4 |
#PBS -N run_gnu_1 |
| 5 |
#PBS -l nodes=1:ppn=12 |
| 6 |
#PBS -e run_gnu.stderr |
| 7 |
#PBS -o run_gnu.stdout |
| 8 |
|
| 9 |
#- batch parameters are specified above (lines starting with #PBS); note that after 1rst |
| 10 |
# blank line (above), anything folowing "#" character is treated as comments |
| 11 |
# |
| 12 |
# example of a PBS batch script to run MITgcm on new (x86_64) acesgrid cluster |
| 13 |
# using executable compiled with gfortran (and OpenMPI if using MPI) |
| 14 |
# and running on /data/ disk(/net/eaps-80-11/data/) |
| 15 |
|
| 16 |
# $Header: /u/gcmpack/MITgcm_contrib/jmc_script/run_gnu.pbs,v 1.1 2012/10/25 21:17:10 jmc Exp $ |
| 17 |
# $Name: $ |
| 18 |
|
| 19 |
sfx=1 # directory suffix |
| 20 |
mpi=0 # number of MPI procs (=0 for non MPI run) |
| 21 |
mth=0 # number of OMP threads (=0 for non Multi-thread run) |
| 22 |
|
| 23 |
if test -f /etc/profile.d/modules.sh ; then |
| 24 |
. /etc/profile.d/modules.sh |
| 25 |
fi |
| 26 |
|
| 27 |
HERE=`pwd` |
| 28 |
echo "start from HERE='$HERE' at: "`date` |
| 29 |
echo " sfx=$sfx , mpi=$mpi , mth=$mth , host="`hostname` |
| 30 |
|
| 31 |
#- dir where to run mitgcmuv (batch job starts in home dir; need to "cd" to run dir): |
| 32 |
runD="/net/eaps-80-11/data/jm_c/exp/atm_gray/run_$sfx" |
| 33 |
echo -n " run in runD='$runD' on nodes: " |
| 34 |
cat $PBS_NODEFILE | sort | uniq |
| 35 |
cd $runD |
| 36 |
echo " sfx=$sfx , mpi=$mpi , mth=$mth" > mf_run |
| 37 |
cat $PBS_NODEFILE >> mf_run |
| 38 |
|
| 39 |
umask 0022 |
| 40 |
#- to get case insensitive "ls" (and order of tested experiments) |
| 41 |
export LC_ALL="en_US.UTF-8" |
| 42 |
|
| 43 |
if [ $mth -ge 1 ] ; then |
| 44 |
export OMP_NUM_THREADS=$mth |
| 45 |
export GOMP_STACKSIZE=400m |
| 46 |
fi |
| 47 |
|
| 48 |
module add gcc |
| 49 |
if test $mpi = 0 ; then |
| 50 |
EXE="./mitgcmuv > std_outp" |
| 51 |
else |
| 52 |
module add openmpi |
| 53 |
EXE="mpirun -v" |
| 54 |
if [ $mth -ge 1 ] ; then EXE="$EXE -x OMP_NUM_THREADS -x GOMP_STACKSIZE" ; fi |
| 55 |
#- select which MPI procs to use |
| 56 |
nn=`cat $PBS_NODEFILE | sort | uniq | wc -l` |
| 57 |
if [ $nn -gt 1 ] ; then dd=`expr $mpi % $nn` ; else dd=1 ; fi |
| 58 |
if [ $dd -eq 0 ] ; then |
| 59 |
npn=`expr $mpi / $nn` |
| 60 |
echo " Nb of nodes=$nn , nb of process per node=$npn" |
| 61 |
cat $PBS_NODEFILE | sort | uniq > mf |
| 62 |
EXE="$EXE -hostfile mf -npernode $npn ./mitgcmuv" |
| 63 |
else |
| 64 |
EXE="$EXE -np $mpi ./mitgcmuv" |
| 65 |
fi |
| 66 |
fi |
| 67 |
|
| 68 |
echo "list of loaded modules:" |
| 69 |
module list 2>&1 |
| 70 |
echo " " |
| 71 |
echo "run command: $EXE" |
| 72 |
eval $EXE |
| 73 |
|
| 74 |
echo "" ; echo " run ended at: "`date` |