Newer
Older

Paul Gierz
committed
#! /bin/ksh
###############################################################################
# test0086b.run
#
# Generated by $Id: mkexp 421 2016-06-01 12:50:59Z m221078 $
#
# $Id: DEFAULT.run.tmpl 9187 2017-08-09 14:54:45Z m211003 $
#
# $Id: DEFAULT.config 8788 2016-09-20 14:14:42Z m211003 $
# $Id: SETUP.config.in 8426 2016-02-18 16:04:00Z m221078 $
# $Id: piControl-CR.config 8788 2016-09-20 14:14:42Z m211003 $
# $Id: no_hamocc.config -1 2015-08-28 12:30:51Z m221078 $
# $Id: no_hamocc.config -1 2015-08-28 12:30:51Z m221078 $
# $Id: hdoutput m211003 $
# $Id: ebm_output_hrly.config 1 2016-07-22 14:32:06Z m300467 $
# $Id: mistral.config 8788 2016-09-20 14:14:42Z m211003 $
#
###############################################################################
#
# Setup for mistral (SLURM)
#
# $Id: mistral.tmpl 9187 2017-08-09 14:54:45Z m211003 $
#
#SBATCH --job-name=test_run
#SBATCH --partition=compute
#SBATCH --ntasks-per-node=24
#SBATCH --ntasks=96
#SBATCH --cpus-per-task=1
#SBATCH --time=00:01:00
#SBATCH --output=test_run_%j.log
#SBATCH --error=test_run_%j.log
#SBATCH --mail-type=FAIL

Paul Gierz
committed
#SBATCH --mail-user=pgierz@awi.de
#SBATCH --account=ba0989

Paul Gierz
committed
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
ulimit -s 102400
ulimit -c 0
# OpenMPI optimised
export OMPI_MCA_pml=ob1 # sets the point-to-point management layer
export OMPI_MCA_mtl=^mxm # sets the matching transport layer (MPI-2 one-sided comm.)
SLURM_JOB_NAME=test_run
AWI_ND=3
PISM_ND=1
hostname="m"
# Job nodes extraction
echo "nodelist = $SLURM_JOB_NODELIST"
nodeslurm=$SLURM_JOB_NODELIST
tmp=${nodeslurm#"m["}
nodes=${tmp%]*}
myarray=(`echo $nodes | sed 's/,/\n/g'`)
idx=0
for element in "${myarray[@]}"
do
if [[ "$element" == *"-"* ]]; then
array=(`echo $element | sed 's/-/\n/g'`)
for node in $(seq ${array[0]} ${array[1]})
do
nodelist[$idx]=$node
idx=$idx+1
done
else
nodelist[$idx]=$element
idx=$idx+1
fi
done
for element in "${nodelist[@]}"
do
echo "$element"
done
# AWI-CM nodes list
awi=""
for idx in $(seq 0 $((AWI_ND-1)))
do
if [[ $idx == $((AWI_ND-1)) ]]; then
awi="$awi${nodelist[$idx]}"
else
awi="$awi${nodelist[$idx]},"
fi
done
echo "AWI-CM nodes: $awi"
# PISM nodes list
length=${#nodelist[@]}
pism=""
for idx in $(seq $AWI_ND $((length-1)))
do
if [[ $idx == $((length-1)) ]]; then
pism="$pism${nodelist[$idx]}"
else
pism="$pism${nodelist[$idx]},"
fi
done
echo "PISM nodes: $pism"
STARTTIME=`date +%s`
# Run PISM
#echo "srun --propagate=STACK,CORE --nodes=$PISM_ND --ntasks=$((SLURM_NTASKS_PER_NODE*PISM_ND)) --ntasks-per-node=$SLURM_NTASKS_PER_NODE --nodelist="$hostname[$pism]" --cpu_bind=cores ./pism &"
srun --nodelist="$hostname[$pism]" ./pism > pism.log &
# Run AWI-CM
#echo "srun --propagate=STACK,CORE --nodes=$AWI_ND --ntasks=$((SLURM_NTASKS_PER_NODE*AWI_ND)) --ntasks-per-node=$SLURM_NTASKS_PER_NODE --nodelist="$hostname[$awi]" --cpu_bind=cores ./awi_cm &"
srun --nodelist="$hostname[$awi]" ./awi_cm > awi.log &
wait
ENDTIME=`date +%s`
echo "Total time: $((ENDTIME - STARTTIME)) seconds"
echo "Done"