/[MITgcm]/MITgcm/verification/cpl_aim+ocn/run_cpl_test
ViewVC logotype

Annotation of /MITgcm/verification/cpl_aim+ocn/run_cpl_test

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.21 - (hide annotations) (download)
Mon Dec 2 23:39:42 2013 UTC (10 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint65
Changes since 1.20: +24 -15 lines
change default mpirun command (which works for openmpi & new mpich-2)

1 jmc 1.1 #! /bin/sh
2    
3 jmc 1.21 # $Header: /u/gcmpack/MITgcm/verification/cpl_aim+ocn/run_cpl_test,v 1.20 2013/01/16 13:40:04 jmc Exp $
4 jmc 1.1 # $Name: $
5    
6 jmc 1.16 #- default:
7 jmc 1.17 Npr=3 ; NpOc=1 ;
8     #Npr=25; NpOc=12;
9 jmc 1.13 MTH=
10     MTHo=
11     MTHa=
12 jmc 1.20 GMKopt='-devel'
13     #GMKopt='-ieee'
14 jmc 1.17 #GMKopt=
15     rnkO=1 ; rnkA=`expr $rnkO + $NpOc`
16 jmc 1.16
17     #- parse options:
18 jmc 1.15 if [ $# -ge 1 ] ; then if test $1 = '-mth' ; then
19 jmc 1.14 MTH='-omp' ; shift
20     if test -f input_ocn/eedata.mth ; then MTHo=$MTH ; fi
21     if test -f input_atm/eedata.mth ; then MTHa=$MTH ; fi
22 jmc 1.15 fi ; fi
23 jmc 1.20 #- allows more argument for building step (step=1)
24     chkArg=$# ; if [ $# -gt 1 ]; then chkArg=$1 ; fi
25     if [ $chkArg -ne 1 ]; then
26     echo 'Usage:'`basename $0`' [opt] step [bld-arg]'
27 jmc 1.10 echo ' => test coupled set-up on linux box (1.cpu)'
28 jmc 1.14 echo 'opt = -mth : compile and run (if eedata.mth) 2-threads for ocn & atm'
29     echo ' step = 0 : clean all directories'
30 jmc 1.20 echo ' step = 1 : compile the 3 executables (cpl,ocn,atm); optional arg:'
31     echo ' -of Optfile_Name : using option-file "Optfile_Name"'
32 jmc 1.14 echo ' step = 2 : copy input files and dir(s)'
33 jmc 1.17 echo " step = 3 : run with $Npr mpi processes"
34 jmc 1.14 echo ' step = 4 : check the results'
35     echo ' step = 5 : remove output files in rank_0,1,2 dir.'
36 jmc 1.1 exit
37     fi
38     kpr=$1
39     dir=`pwd`
40    
41     #============================================================================
42    
43     if test $kpr = 0
44     then
45 jmc 1.11 rm -f pr_group std_outp comp_res.{ocn,atm,land,sice}
46 jmc 1.1 rm -f build_???/TTT.*make.* build_???/TTT.mkdepend.*
47 jmc 1.17 /bin/rm -r -f rank_? rank_1? rank_2?
48     if test -f build_cpl/Makefile ; then cd build_cpl ; make Clean ; cd .. ; fi
49     if test -f build_ocn/Makefile ; then cd build_ocn ; make Clean ; cd .. ; fi
50     if test -f build_atm/Makefile ; then cd build_atm ; make Clean ; cd .. ; fi
51 jmc 1.1 fi
52 jmc 1.8 if test $kpr = 5
53     then
54     echo 'remove output files in rank_0,1,2 dir.'
55 jmc 1.11 rm -f pr_group std_outp comp_res.{ocn,atm,land,sice}
56 jmc 1.8 if test -d rank_0 ; then cd rank_0 ; rm -f Coupler.0000.clog ; cd .. ; fi
57 jmc 1.17 if test -d rank_$rnkO
58     then cd rank_$rnkO ; rm -f *.data *.meta STD???.0000 UV-*.0001.clog ; cd .. ; fi
59     if test -d rank_$rnkA
60     then cd rank_$rnkA ; rm -f *.data *.meta STD???.0000 UV-*.0001.clog ; cd .. ; fi
61 jmc 1.8 fi
62 jmc 1.1
63     if test $kpr = 1
64     then
65    
66 jmc 1.20 #- choice of the optfile:
67     # default: take a local one in dir verification with sufix '+mpi'
68 jmc 1.16 nbOpF=`ls ../linux_* | grep '+mpi' 2> /dev/null | wc -l`
69 jmc 1.20 # or take the one given as argument:
70     if [ $# -ge 3 ]; then
71     if test $2 = '-of' -a -f $3 ; then nbOpF=-1 ; OPTFILE=$3 ; fi
72     fi
73 jmc 1.17 if test $nbOpF = 1 ; then
74 jmc 1.16 OPTFILE=`ls ../linux_* | grep '+mpi'`
75 jmc 1.17 elif [ $nbOpF -ge 2 ] ; then
76     echo "pick the 1rst of these ( $nbOpF ) optfiles:"
77     ls ../linux_* | grep '+mpi'
78     OPTFILE=`ls ../linux_* | grep '+mpi' | head -1`
79 jmc 1.20 elif [ $nbOpF -ne -1 ] ; then
80 jmc 1.16 echo "Pb in finding optfile: found $nbOpF :"
81 jmc 1.17 ls ../linux_* | grep '+mpi' ; exit
82 jmc 1.10 fi
83 jmc 1.20 zz=`grep '^ *FC=' $OPTFILE | tail -1`
84     echo " Using optfile: $OPTFILE (compiler: $zz) $MTH"
85 jmc 1.11 zz=`echo $OPTFILE | grep -c '^\/'`
86     if test $zz = 0 ; then OPTFILE="../$OPTFILE" ; fi
87 jmc 1.10 #---
88 jmc 1.1 echo '==== compile coupler:'
89     cd build_cpl
90     echo ' --- genmake2 (cpl):'
91 jmc 1.16 ../../../tools/genmake2 -of $OPTFILE -mpi $GMKopt > TTT.genmake.$$
92 jmc 1.1 tail -5 TTT.genmake.$$
93     echo ' --- make depend (cpl):'
94     make depend > TTT.mkdepend.$$
95     tail -5 TTT.mkdepend.$$
96 jmc 1.21 echo ' --- make (cpl):' ; touch TTT.make.$$
97     #do_make_syntax.sh obj > TTT.make.$$ 2>&1
98     make >> TTT.make.$$ 2>&1
99 jmc 1.1 tail -10 TTT.make.$$
100     echo ' ' ; cd $dir
101    
102     echo '==== compile OGCM:'
103     cd build_ocn
104     echo ' --- genmake2 (ocn):'
105 jmc 1.16 ../../../tools/genmake2 -of $OPTFILE -mpi $MTHo $GMKopt > TTT.genmake.$$
106 jmc 1.1 tail -5 TTT.genmake.$$
107     echo ' --- make depend (ocn):'
108     make depend > TTT.mkdepend.$$
109     tail -10 TTT.mkdepend.$$
110 jmc 1.21 echo ' --- make (ocn):' ; touch TTT.make.$$
111     #do_make_syntax.sh obj > TTT.make.$$ 2>&1
112     make >> TTT.make.$$ 2>&1
113 jmc 1.1 tail -10 TTT.make.$$
114     echo ' ' ; cd $dir
115    
116     echo '==== compile AGCM:'
117     cd build_atm
118     echo ' --- genmake2 (atm):'
119 jmc 1.16 ../../../tools/genmake2 -of $OPTFILE -mpi $MTHa $GMKopt > TTT.genmake.$$
120 jmc 1.1 tail -5 TTT.genmake.$$
121     echo ' --- make depend (atm):'
122     make depend > TTT.mkdepend.$$
123     tail -10 TTT.mkdepend.$$
124 jmc 1.21 echo ' --- make (atm):' ; touch TTT.make.$$
125     #do_make_syntax.sh obj > TTT.make.$$ 2>&1
126     make >> TTT.make.$$ 2>&1
127 jmc 1.1 tail -10 TTT.make.$$
128     echo ' ' ; cd $dir
129    
130     ls -l build_???/mitgcmuv
131    
132     fi
133    
134     if test $kpr = 2
135     then
136 jmc 1.17 echo 'rm dir:' rank_? rank_1? rank_2?
137     /bin/rm -r -f rank_? rank_1? rank_2?
138     echo 'Link files from dir:' input_cpl '->' rank_0
139     mkdir rank_0
140     ( cd rank_0 ; ln -s ../input_cpl/* . )
141    
142     n=$rnkO
143     echo 'Link files from dir:' input_ocn '->' rank_$n
144     mkdir rank_$n
145     cd rank_$n
146     ln -s ../input_ocn/* .
147     if test -x prepare_run ; then ./prepare_run ; fi
148 jmc 1.13 if test "x$MTHo" != x ; then
149     echo " MTH run: mv -f eedata.mth eedata"
150 jmc 1.17 if test -h eedata ; then rm -f eedata ; fi
151 jmc 1.13 mv -f eedata.mth eedata
152     fi
153 jmc 1.1 cd $dir
154 jmc 1.17 n=`expr $n + 1`
155     while [ $n -le $NpOc ] ; do
156     ln -s rank_$rnkO rank_$n
157     n=`expr $n + 1`
158     done
159    
160     n=$rnkA
161     echo 'Link files from dir:' input_atm '->' rank_$n
162     mkdir rank_$n
163     cd rank_$n
164     ln -s ../input_atm/* .
165     if test -x prepare_run ; then ./prepare_run ; fi
166 jmc 1.13 if test "x$MTHa" != x ; then
167     echo " MTH run: mv -f eedata.mth eedata"
168 jmc 1.17 if test -h eedata ; then rm -f eedata ; fi
169 jmc 1.13 mv -f eedata.mth eedata
170     fi
171 jmc 1.1 cd $dir
172 jmc 1.17 n=`expr $n + 1`
173     while [ $n -lt $Npr ] ; do
174     ln -s rank_$rnkA rank_$n
175     n=`expr $n + 1`
176     done
177 jmc 1.1
178     fi
179    
180     if test $kpr = 3
181     then
182 jmc 1.17 ROOTDIR=$dir
183     # rm -f rank_?/pickup*.ckptA.00?.00?.??ta
184     echo $ROOTDIR
185     tmpfil=TTT.$$
186    
187     #--- running on the same node:
188     list='' ; nc=0; xx=`hostname`
189     while [ $nc -lt $Npr ] ; do list="$list $xx" ; nc=`expr $nc + 1` ; done
190     #-- On darwin cluster node (from qrsh session):
191     # JOB_ID=`qstat | sed -n '3,$ p' | grep " $USER " | awk '{print $1}'`
192     # NODEFILE="/tmp/$JOB_ID.1.darwin/machines"
193     # echo " JOB_ID = '$JOB_ID' ; NODEFILE = '$NODEFILE'"
194     #-- On ACES cluster (in PBS batch job):
195     # NODEFILE=$PBS_NODEFILE
196     #--- running on different nodes:
197     # ls -l $NODEFILE
198     # nprc=`cat $NODEFILE | uniq | wc -l`
199     # if [ $nprc -ge $Npr ] ; then
200     # list=`cat $NODEFILE | uniq | head -$Npr`
201     # else
202     # list=`cat $NODEFILE | head -$Npr`
203     # fi
204    
205     nc=0; nn=0; dd1=cpl ;
206     rm -f pr_group ; touch pr_group
207     for xx in $list
208     do
209     echo $xx $nn $dir/build_$dd1/mitgcmuv >> pr_group
210     nc=`expr $nc + 1`
211     if [ $nc -le $NpOc ] ; then dd1=ocn ; else dd1=atm ; fi
212     nn=1
213     done
214 jmc 1.18 NpAt=`expr $Npr - 1 - $NpOc`
215     RunOpt="-np 1 ./build_cpl/mitgcmuv"
216     RunOpt="$RunOpt : -np $NpOc ./build_ocn/mitgcmuv"
217     RunOpt="$RunOpt : -np $NpAt ./build_atm/mitgcmuv"
218 jmc 1.17
219     cd $ROOTDIR
220     if test "x$MTH" != x ; then
221     export OMP_NUM_THREADS=2 ; export KMP_STACKSIZE=400m
222     if test "x$MTHo" != x ; then
223     echo -n " run OCN ($MTHo) with $OMP_NUM_THREADS threads ;"
224     fi
225     if test "x$MTHa" != x ; then
226     echo -n " run ATM ($MTHa) with $OMP_NUM_THREADS threads ;"
227     fi
228     echo ""
229     fi
230 jmc 1.18 mpich=`which mpirun`
231     echo $mpich | grep 'mpich-mx' > /dev/null 2>&1
232     mpichmx=$?
233 jmc 1.21 echo $mpich | grep 'mpich-1' > /dev/null 2>&1
234     mpich1=$?
235 jmc 1.18 echo $mpich | grep 'mpich2' > /dev/null 2>&1
236     mpich2=$?
237 jmc 1.19 echo $mpich | grep 'openmpi' > /dev/null 2>&1
238     opnmpi=$?
239 jmc 1.21 if test $mpich1 == 0 ; then
240     # /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpirun.ch_gm -pg pr_group -wd $ROOTDIR --gm-kill 5 -v ./build_cpl/mitgcmuv > std_outp 2>&1
241     #- with mpich-1 (on danton, old aces: ao, geo, itrda):
242     echo "execute 'mpirun -p4pg pr_group -v ./build_cpl/mitgcmuv' :"
243     mpirun -p4pg pr_group -v ./build_cpl/mitgcmuv > std_outp 2>&1
244 jmc 1.18 elif test $mpichmx == 0 ; then
245     #- with mpich-mx (on beagle):
246     echo "execute 'mpirun -pg pr_group -v ./build_cpl/mitgcmuv' :"
247     mpirun -pg pr_group -v ./build_cpl/mitgcmuv > std_outp 2>&1
248 jmc 1.21 elif test $mpich2 == 0 -o $opnmpi == 0 ; then
249     #- with Hydra mpich2 (on baudelaire) or with openmpi:
250     echo "execute 'mpirun $RunOpt' :"
251     mpirun $RunOpt > std_outp 2>&1
252 jmc 1.18 else
253 jmc 1.21 #- new mpich (mpich2) installation often just put in "mpich" dir
254     echo "execute 'mpirun $RunOpt' :"
255     mpirun $RunOpt > std_outp 2>&1
256 jmc 1.18 fi
257 jmc 1.17 tail -20 std_outp
258     ls -l rank_$rnkO/pickup*.ckptA.001.001.data
259     ls -l rank_$rnkA/pickup*.ckptA.001.001.data
260 jmc 1.1
261     fi
262    
263     if test $kpr = 4
264     then
265 jmc 1.18 CompRes="$HOME/bin/comp_res"
266 jmc 1.1
267 jmc 1.17 if test -f rank_$rnkO/STDOUT.0000
268 jmc 1.1 then echo '==> check Ocean output:'
269 jmc 1.18 $CompRes rank_$rnkO/STDOUT.0000 results/ocnSTDOUT.0000
270 jmc 1.10 mv -f comp_res.log comp_res.ocn
271     echo ' '
272 jmc 1.17 else echo "No Ocean output file in rank_$rnkO" ; fi
273 jmc 1.1
274 jmc 1.17 if test -f rank_$rnkA/STDOUT.0000
275     then
276 jmc 1.1 echo '==> check Atmos output:'
277 jmc 1.18 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.0000
278 jmc 1.10 mv -f comp_res.log comp_res.atm
279 jmc 1.1 echo '==> check Land output:'
280 jmc 1.18 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.0000 L
281 jmc 1.10 mv -f comp_res.log comp_res.land
282 jmc 1.1 echo '==> check thSIce output:'
283 jmc 1.18 $CompRes rank_$rnkA/STDOUT.0000 results/atmSTDOUT.0000 I
284 jmc 1.10 mv -f comp_res.log comp_res.sice
285     echo ' '
286 jmc 1.17 else echo "No Atmos output file in rank_$rnkA" ; fi
287 jmc 1.1
288     fi
289    
290     exit 0

  ViewVC Help
Powered by ViewVC 1.1.22