/[MITgcm]/MITgcm/tools/example_scripts/csail/test_baudelaire
ViewVC logotype

Contents of /MITgcm/tools/example_scripts/csail/test_baudelaire

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


Revision 1.30 - (show annotations) (download)
Tue Sep 27 20:34:31 2016 UTC (7 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z
Changes since 1.29: +4 -1 lines
adjust for changes in Gael's verification_other experiment (global_oce_cs32).

1 #! /usr/bin/env bash
2
3 # $Header: /u/gcmpack/MITgcm/tools/example_scripts/csail/test_baudelaire,v 1.29 2016/07/10 14:30:24 jmc Exp $
4
5 # Test script for MITgcm that should work on most of the csail.mit.edu Linux machines.
6
7 tst_grp=0 ; if test $# = 1 ; then tst_grp=$1 ; fi
8 if test $tst_grp != 'a' -a $tst_grp != 'b' ; then
9 echo "missing or invalid argument (expect: 'a' or 'b') ==> exit"
10 exit 1
11 fi
12
13 # defaults
14 #export PATH="$PATH:/usr/local/bin"
15 if [ -d ~/bin ]; then export PATH=$PATH:~/bin ; fi
16 #- to get case insensitive "ls" (and order of tested experiments)
17 export LC_ALL="en_US.UTF-8"
18 # Turn off stack limit for FIZHI & AD-tests
19 ulimit -s unlimited
20 # MPI test (for now, only with gfortran)
21 export MPI_GCC_DIR=/srv/software/gcc/gcc-packages/gcc-4.4.5/mpich2/mpich2-1.3
22 export MPI_INC_DIR=$MPI_GCC_DIR/include
23 export PATH="$PATH:$MPI_GCC_DIR/bin"
24
25 #- method to acces CVS:
26 # export CVSROOT='/u/gcmpack'
27 # export CVSROOT=':ext:@mitgcm.org:/u/gcmpack'
28 # export CVS_RSH='ssh' ; cvs co -P MITgcm > /dev/null
29 # cvs -d :pserver:cvsanon@mitgcm.org:/u/gcmpack co -P MITgcm > /dev/null
30 cmdCVS='cvs -d :pserver:cvsanon@mitgcm.org:/u/gcmpack'
31 cmdCVS='cvs -d /u/gcmpack'
32
33 # checkOut=2 : download new code ;
34 # =3 : skip download but, if sepDir, use a new copy
35 # =1 : update code (if no existing code -> swith to 2)
36 # =0 : use existing code (if no existing code -> swith to 2)
37 dInWeek=`date +%a`
38 outDir=`hostname -s`
39 TESTDIR="/scratch/jmc/test_${outDir}"
40 outDir="${outDir}-${tst_grp}"
41 MC=13
42 sepDir=1
43 option=
44 #tst_list='g7a adm mpa g77 gfo+rs mth mp2+rs mpi ifc'
45 #if test "x$dInWeek" = xSun ; then tst_list="$tst_list tlm oad" ; fi
46 if test $tst_grp = 'a' ; then
47 checkOut=2
48 tst_list='g7a mpa mth mp2+rs mpi oad'
49 else
50 checkOut=3
51 tst_list='adm g77 gfo+rs ifc'
52 if test "x$dInWeek" = xSun ; then tst_list="$tst_list tlm" ; fi
53 fi
54 echo " test: $outDir ; list='$tst_list'"
55
56 #option="-nc" ; checkOut=1
57 #option="-q" ; checkOut=1
58
59 TODAY=`date +%d`
60 tdir=$TESTDIR
61 if test $checkOut != 2 ; then
62 if test -e $tdir/MITgcm/CVS ; then
63 echo $tdir/MITgcm/CVS 'exist'
64 if test $sepDir = 0 -a $checkOut = 1 ; then
65 echo -n "Update the MITgcm code using: $cmdCVS ..."
66 cd $tdir/MITgcm
67 $cmdCVS update -P -d
68 echo " done"
69 fi
70 else
71 echo -n $tdir/MITgcm 'missing ; '
72 checkOut=2
73 fi
74 fi
75 if test $checkOut = 2 ; then
76 if test -e $tdir ; then
77 echo -n "Removing working copy: $tdir/MITgcm ..."
78 test -e $tdir/MITgcm && rm -rf $tdir/MITgcm
79 else
80 echo -n "Creating a working dir: $tdir ..."
81 mkdir $tdir
82 fi
83 echo " done"
84 echo -n "Downloading the MITgcm code using: $cmdCVS ..."
85 cd $tdir
86 $cmdCVS co -P MITgcm > /dev/null
87 echo " done"
88 if test -d other_input ; then
89 list_dirs=`(cd other_input ; ls 2> /dev/null )`
90 echo "Updating ( $cmdCVS update -P -d ) 'other_input' extra dirs:"
91 for exd in $list_dirs ; do
92 if test -d other_input/$exd/CVS ; then echo " $exd"
93 ( cd other_input/$exd ; $cmdCVS update -P -d )
94 fi
95 done
96 echo " <-- update of 'other_input' dirs done"
97 fi
98 else
99 cd $tdir
100 fi
101
102 #------------------------------------------------------------------------
103
104 firstTst=`echo $tst_list | awk '{print $1}'`
105 last_Tst=`echo $tst_list | awk '{print $NF}'`
106 for tt in $tst_list
107 do
108
109 echo "================================================================"
110 typ=`echo $tt | sed 's/+rs//'`
111 #- define list of additional experiences to test:
112 addExp=''
113 if test $typ = 'mp2' -o $typ = 'ifc' ; then
114 addExp="offline_cheapaml atm_gray"
115 fi
116 if test $typ = 'gfo' -o $typ = 'ifc' ; then
117 addExp="$addExp global_oce_biogeo_bling"
118 addExp="$addExp shelfice_remeshing"
119 fi
120 if test $typ = 'mpi' ; then
121 addExp="$addExp global_oce_cs32"
122 fi
123 #- check day and time:
124 curDay=`date +%d` ; curHour=`date +%H`
125 if [ $curDay -ne $TODAY ] ; then
126 date ; echo "day is over => skip test $typ"
127 continue
128 fi
129 if [ $curHour -ge 18 ] ; then
130 date ; echo "too late to run test $typ"
131 continue
132 fi
133 if test $sepDir = 0 -a "x$option" != x -a $tt != $last_Tst ; then
134 echo "using option='$option' prevent multi-tests => skip test $typ"
135 continue
136 fi
137 #- clean-up old output files
138 rm -f $tdir/output_${typ}*
139 touch $tdir/output_$tt
140 if test $sepDir = 1 ; then
141 new_dir="MITgcm_$typ"
142 reUse=1 ; if [ $checkOut -ge 2 ] ; then reUse=0 ; fi
143 if test -d $new_dir/CVS -a $reUse = 1 ; then
144 pushd $new_dir
145 if test $tt != $typ ; then
146 ( cd verification ; ../tools/do_tst_2+2 -clean )
147 fi
148 if test $checkOut = 1 ; then
149 echo -n "Update the MITgcm code using: $cmdCVS ..."
150 $cmdCVS update -P -d
151 echo " done"
152 fi
153 else
154 if test -d prev ; then
155 #-- save previous summary:
156 oldS=`ls -t ${new_dir}/verification/tr_${outDir}_*/summary.txt 2> /dev/null | head -1`
157 if test "x$oldS" != x ; then cp -p -f $oldS prev/tr_out.$typ ; fi
158 if test $tt != $typ ; then
159 oldS=`ls -t ${new_dir}/verification/rs_${outDir}_*/summary.txt 2> /dev/null | head -1`
160 if test "x$oldS" != x ; then cp -p -f $oldS prev/rs_out.$typ ; fi
161 fi
162 fi
163 test -e $new_dir && rm -rf $new_dir
164 mkdir $new_dir
165 pushd $new_dir
166 cp -ra ../MITgcm/* .
167 #-- download additional experience from Contrib:
168 for exp2add in $addExp ; do
169 echo " add dir: $exp2add (from Contrib:verification_other)"
170 ( cd verification ; $cmdCVS co -P -d $exp2add \
171 MITgcm_contrib/verification_other/$exp2add > /dev/null )
172 if test $exp2add = 'global_oce_cs32' ; then
173 echo " link dir 'other_input/gael_oce_cs32_input' to 'input_fields'"
174 ( cd verification/${exp2add}
175 ln -s ../../../other_input/gael_oce_cs32_input input_fields )
176 echo " link dir 'other_input/core2_cnyf' in here"
177 ( cd verification/${exp2add}
178 ln -s ../../../other_input/core2_cnyf . )
179 fi
180 if test $exp2add = 'shelfice_remeshing' ; then
181 echo " link dir 'other_input/remeshing_code' to 'extra_code'"
182 ( cd verification/${exp2add}
183 ln -s ../../../other_input/remeshing_code extra_code )
184 fi
185 done
186 fi
187 else
188 pushd MITgcm
189 fi
190 cd verification
191
192 #-- set the testreport command:
193 comm="./testreport"
194 if test $typ = 'g7a' -o $typ = 'adm' -o $typ = 'mpa' ; then
195 comm="$comm -adm"
196 elif test $typ = 'oad' ; then
197 comm="$comm -oad"
198 elif test $typ = 'tlm' ; then
199 comm="$comm -tlm"
200 elif test $typ = 'mth' -o $typ = 'mp2' ; then
201 export GOMP_STACKSIZE=400m
202 export OMP_NUM_THREADS=2
203 comm="$comm -mth"
204 else
205 comm="$comm -md cyrus-makedepend"
206 fi
207 comm="$comm -odir $outDir -a jmc@mitgcm.org"
208 #-- set the optfile (+ mpi & match-precision)
209 MPI=0
210 case $typ in
211 'g77'|'g7a') OPTFILE='../tools/build_options/linux_amd64_g77' ;;
212 'gfo'|'adm'|'oad'|'tlm'|'mth') comm="$comm -match $MC -devel"
213 OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
214 'ifc') comm="$comm -devel"
215 OPTFILE='../tools/build_options/linux_amd64_ifort11' ;;
216 'pgi') OPTFILE='../tools/build_options/linux_amd64_pgf77' ;;
217 'mpa'|'mpi'|'mp2') comm="$comm -match $MC -devel" ; MPI=6
218 OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
219 *) OPTFILE= ;;
220 esac
221 #-- set MPI command:
222 if test $MPI != 0 ; then
223 if test $typ = 'mp2' ; then MPI=3 ; fi
224 if test $typ = 'mpa' ; then
225 EXE="mpirun -np TR_NPROC ./mitgcmuv_ad"
226 else
227 EXE="mpirun -np TR_NPROC ./mitgcmuv"
228 fi
229 fi
230
231 #-- set specific Env Vars:
232 if test $typ = 'oad' ; then
233 source ~jmc/mitgcm/bin/setenv_OpenAD.sh
234 fi
235 if test $typ = 'ifc' ; then
236 source /srv/software/intel/intel-11.1.073/bin/ifortvars.sh intel64
237 fi
238 if test $typ = 'pgi' ; then
239 #listT='fizhi-cs-32x32x40 fizhi-cs-aqualev20'
240 export PGI=/srv/software/pgi/pgi-10.9
241 export PATH="$PATH:$PGI/linux86-64/10.9/bin"
242 export LM_LICENSE_FILE=$PGI/license.dat
243 fi
244
245 if test $sepDir = 0 -a "x$option" = x -a $tt = $firstTst -a $checkOut != 2 ; then
246 #-- cleaning:
247 echo "======================"
248 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
249 cmdCLN="./testreport -clean"
250 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
251 $cmdCLN >> $tdir/output_$tt 2>&1
252 echo "======================"
253 echo "" | tee -a $tdir/output_$tt
254 fi
255
256 #-- run the testreport command:
257 echo -n "Running testreport using:" | tee -a $tdir/output_$tt
258 if test "x$OPTFILE" != x ; then
259 comm="$comm -of=$OPTFILE"
260 fi
261 if test $MPI = 0 ; then echo '' | tee -a $tdir/output_$tt
262 else echo " (EXE='$EXE')" | tee -a $tdir/output_$tt
263 comm="$comm -MPI $MPI -command \"\$EXE\""
264 fi
265 if test "x$option" != x ; then comm="$comm $option" ; fi
266 #if test $typ = 'pgi' ; then comm="$comm -t \"\$listT\"" ; fi
267 echo " \"eval $comm\"" | tee -a $tdir/output_$tt
268 echo "======================"
269 eval $comm >> $tdir/output_$tt 2>&1
270 sed -n "/^An email /,/^======== End of testreport / p" $tdir/output_$tt
271 echo "" | tee -a $tdir/output_$tt
272
273 #-- also test restart (test 2+2=4)
274 if test $tt != $typ
275 then
276 echo "testing restart using:" | tee -a $tdir/output_$tt
277 comm="../tools/do_tst_2+2 -o $outDir -a jmc@mitgcm.org"
278 if test $MPI = 0 ; then
279 echo " \"$comm\"" | tee -a $tdir/output_$tt
280 echo "======================"
281 $comm >> $tdir/output_$tt 2>&1
282 else
283 echo " \"$comm -mpi -exe $EXE\"" | tee -a $tdir/output_$tt
284 echo "======================"
285 $comm -mpi -exe "$EXE" >> $tdir/output_$tt 2>&1
286 fi
287 echo ; cat tst_2+2_out.txt
288 echo
289 fi
290 export OMP_NUM_THREADS=1
291
292 if test $sepDir = 0 ; then
293 #-- cleaning:
294 echo "======================"
295 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
296 if test $tt != $typ ; then
297 cmdCLN="../tools/do_tst_2+2 -clean"
298 echo " clean tst_2+2 running: $cmdCLN" | tee -a $tdir/output_$tt
299 $cmdCLN >> $tdir/output_$tt 2>&1
300 fi
301 if test $tt != $last_Tst ; then
302 cmdCLN="./testreport -clean"
303 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
304 $cmdCLN >> $tdir/output_$tt 2>&1
305 fi
306 echo "======================"
307 echo
308 fi
309 popd
310
311 done

  ViewVC Help
Powered by ViewVC 1.1.22