/[MITgcm]/MITgcm_contrib/test_scripts/other/test_local
ViewVC logotype

Contents of /MITgcm_contrib/test_scripts/other/test_local

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


Revision 1.18 - (show annotations) (download)
Sat Feb 3 16:43:07 2024 UTC (17 months, 1 week ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.17: +12 -7 lines
minor tweak

1 #! /usr/bin/env bash
2
3 # $Header: /u/gcmpack/MITgcm_contrib/test_scripts/other/test_local,v 1.17 2023/10/02 13:02:27 jmc Exp $
4 # $Name: $
5
6 #-------------------------------------------------------------------------------
7 #-- process argument list:
8 if test $# = 0 ; then
9 echo 'need 1 argument'
10 exit
11 else
12 if test $1 = ifort ; then
13 # tst_list='iadm imp2 iur4'
14 tst_list='iad4 imp2 iur4'
15 dd1=`date +%d -d "1 day"`
16 # if test $dd1 != '01' ; then echo 'not last day of month'; exit ; fi
17 elif test $1 = gfort ; then
18 tst_list='gadm gads gad4 gmp4 gmp2 gfo gfo4'
19 # tst_list="$tst_list g77 g7a"
20 elif test $1 = tap ; then
21 tst_list='tapAD tapTL'
22 elif test $1 = gfor8 ; then
23 # tst_list='gadm gads gmp2 gmpi gfo g77'
24 tst_list='gadm gads gmp2 gfo'
25 elif test $1 = gfor4 ; then
26 tst_list='gad4 gmp4 gfo4 g77'
27 else
28 tst_list=$*
29 fi
30 fi
31
32 #-------------------------------------------------------------------------------
33 #-- general setting + MITgcm ref clone update:
34 #
35 #- to get case insensitive "ls" (and order of tested experiments)
36 #export LC_ALL="en_US.UTF-8"
37 #- Turn off stack limit for FIZHI & AD-tests
38 ulimit -s unlimited
39 #- method to acces CVS:
40 cmdCVS='cvs -d :pserver:cvsanon@mitgcm.org:/u/gcmpack -q'
41 #- and which GitHub repository to use:
42 git_repo='MITgcm'; git_code='MITgcm'
43 #git_repo='altMITgcm'; #git_code='MITgcm66h'
44 #- other settings:
45 tmpFil="/tmp/"`basename $0`".$$"
46 logFile='check_update.log'
47 sendCmd='-a jm_c@mitgcm.org'
48 sendCmd='-send scp -a jm_c@mitgcm.org:testing/MITgcm-test'
49 #- expect higher precision if test is run on reference platform+compiler:
50 MC=13
51
52 echo "-- run: \""`basename $0` $*"\" on:" `date` >> $logFile
53 gcmDIR="MITgcm"
54 if test -e $gcmDIR/.git/config ; then
55 if test ! -f git_Hash ; then
56 echo " Missing file "git_Hash" ==> make one from clone '${gcmDIR}'" >> $logFile
57 ( cd $gcmDIR ; git rev-parse HEAD > ../git_Hash )
58 fi
59 else
60 echo " No current clone ==> get a fresh clone" >> $logFile
61 #rm -f git_Hash prevHash
62 if test -d $gcmDIR ; then /bin/rm -rf $gcmDIR ; fi
63 git clone https://github.com/$git_repo/${git_code}.git $gcmDIR
64 ( cd $gcmDIR ; git rev-parse HEAD > ../git_Hash )
65 fi
66
67 #-------------------------------------------------------------------------------
68 #-- check particular set of tests:
69 if test $1 = tap ; then
70 #- Only run this pair of test if MITgcm code got updated:
71 if test -f git_Hash -a -f prevHash ; then
72 #ls -l prevHash >> $logFile
73 diff -q git_Hash prevHash > /dev/null 2>&1
74 retv=$?
75 if test $retv = 0 ; then
76 echo " No update in repos since previous test ==> skip '$1' set of tests" >> $logFile
77 exit 0
78 else
79 echo " Will run '$1' set of tests since repos has been updated" >> $logFile
80 echo -n ' prevHash: ' >> $logFile
81 cat prevHash >> $logFile
82 echo -n ' git_Hash: ' >> $logFile
83 cat git_Hash >> $logFile
84 fi
85 else
86 echo " No file 'prevHash' --> will run '$1' set of tests" >> $logFile
87 fi
88 elif test $1 = gfort ; then
89 #- to force to skip "tap" test while "gfort" is running:
90 if test -f prevHash ; then
91 cp -p prevHash git_Hash
92 else
93 cp -p git_Hash prevHash
94 fi
95 fi
96
97 echo "run: \""`basename $0` $*"\" on:" `date`
98 echo " tst_list='$tst_list'"
99
100 #- to get ~/bin in the patch (for staf) when run on cron:
101 if [ -d ~/bin ]; then
102 echo 'add ~/bin to $PATH'
103 export PATH=$PATH:~/bin
104 #- and for Tapenade:
105 echo $tst_list | grep '\<tap' > /dev/null 2>&1 ; retv=$?
106 if test $retv = 0 ; then
107 source ~jmc/bin/set_tapenade.sh
108 fi
109 fi
110
111 #- for now, cannot mix ifort/gfortran tests:
112 gfort=1
113 for tt in $tst_list
114 do
115 echo $tt | grep '^tap' > /dev/null 2>&1 ; retv=$?
116 if [ $retv -ne 0 ] ; then
117 echo $tt | grep '^g' > /dev/null 2>&1 ; retv=$?
118 fi
119 if [ $retv -eq 0 -a $gfort -ge 1 ] ; then gfort=2
120 elif [ $retv -ne 0 -a $gfort -le 1 ] ; then gfort=0
121 else echo 'cannot mix ifort/gfortran' ; exit
122 fi
123 done
124 if [ $gfort -eq 0 ] ; then
125 #echo 'source ~jmc/bin/intel_v14.sh'
126 #source ~jmc/bin/intel_v14.sh
127 echo 'source ~jmc/bin/intel_v15.sh'
128 source ~jmc/bin/intel_v15.sh
129 fi
130 if [ $gfort -eq 2 ] ; then
131 echo 'source ~jmc/bin/openmpi.sh'
132 source ~jmc/bin/openmpi.sh
133 fi
134
135 #-------------------------------------------------------------------------------
136 #-- Update & Run individual test:
137 for tt in $tst_list
138 do
139
140 #- Clean and Update testing clone: ---------------------------------------------
141 gcmDIR="MITgcm_$tt"
142 echo "=========================================================================="
143 # set -x
144 rm -f tr_clean_$tt.log
145 echo $tt | grep '^.ad' > /dev/null 2>&1 ; taf=$?
146 echo $tt | grep '^tap' > /dev/null 2>&1 ; tap=$?
147 if test $tt = g7a ; then taf=0 ; fi
148 echo " testing tt= $tt , taf= $taf , tap= $tap"
149 if test -e $gcmDIR/.git/config -a -d $gcmDIR/verification ; then
150 #- cleaning previous testreport run and updating the code:
151 if [ $taf -eq 0 -o $tap -eq 0 ] ; then
152 if test $tt = 'tapTL' ; then clOpt='-tlm' ; else clOpt='-adm' ; fi
153 if [ $tap -eq 0 ] ; then clOpt="-tap $clOpt" ; fi
154 set -x
155 #- cleanup previous test:
156 ( cd $gcmDIR/verification ; ./testreport $clOpt -clean > ../../tr_clean_$tt.log 2>&1 )
157 set +x
158 else
159 set -x
160 #- cleanup previous restart:
161 ( cd $gcmDIR/verification ; ../tools/do_tst_2+2 -clean > ../../tr_clean_$tt.log 2>&1 )
162 #- cleanup previous test:
163 ( cd $gcmDIR/verification ; ./testreport -clean >> ../../tr_clean_$tt.log 2>&1 )
164 set +x
165 fi
166 if [ $gfort -eq 0 ] ; then
167 echo ' remove all Makefile_syntax' >> tr_clean_$tt.log
168 ( cd $gcmDIR/verification ; rm -f */build/Makefile_syntax )
169 fi
170 echo "" >> tr_clean_$tt.log
171
172 echo "==========================================================================" \
173 >> tr_clean_$tt.log
174 echo " Update MITgcm code in dir: $gcmDIR using 'git pull':" | tee -a tr_clean_$tt.log
175 set -x
176 #- update the code:
177 ( cd $gcmDIR ; git pull ) >> tr_clean_$tt.log 2>&1 ; retv=$?
178 set +x
179 if test $retv != 0 ; then
180 echo "'git pull' in $gcmDIR fail (return val=$retv) => skip" | tee -a tr_clean_$tt.log
181 continue
182 fi
183 echo " and checkout master:" | tee -a tr_clean_$tt.log
184 set -x
185 ( cd $gcmDIR ; git checkout master -- . ) >> tr_clean_$tt.log 2>&1
186 set +x
187 else
188 echo "Missing '$gcmDIR/.git/config' or dir '$gcmDIR/verification'" >> tr_clean_$tt.log
189 if test -e $gcmDIR ; then
190 echo -n " removing working copy: $gcmDIR ..." >> tr_clean_$tt.log
191 rm -rf $gcmDIR
192 echo " done" >> tr_clean_$tt.log
193 fi
194 #- download new code:
195 echo "==========================================================================" \
196 >> tr_clean_$tt.log
197 echo "Make a clone of $git_code from repo: $git_repo into: $gcmDIR ..." | tee -a tr_clean_$tt.log
198 set -x
199 git clone https://github.com/$git_repo/${git_code}.git $gcmDIR 2> $tmpFil
200 retv=$?
201 set +x
202 if test $retv = 0 ; then
203 echo ' done' >> tr_clean_$tt.log ; rm -f $tmpFil
204 else
205 echo "'git clone' into $gcmDIR failed (return: $retv) => skip" | tee -a tr_clean_$tt.log
206 cat $tmpFil >> tr_clean_$tt.log ; rm -f $tmpFil
207 continue
208 fi
209 fi
210 echo ""
211 echo "=========================================================================="
212
213 if test -d $gcmDIR/verification ; then
214 if test -e tr_run_$tt.log ; then mv -f tr_run_$tt.log tr_run_$tt.log_bak ; fi
215 cd $gcmDIR/verification
216
217 date
218 # verbose mode:
219 set -x
220 pwd
221 test -e tr_out.txt && mv -f tr_out.txt tr_out.sav
222
223 #- Run test in corresponding clone: --------------------------------------------
224 case $tt in
225 'iadm' )
226
227 ./testreport -MPI 3 -adm -of ../tools/build_options/linux_amd64_ifort11 \
228 -devel -nc -ncad -repl_mk do_make_syntax.sh -obj -dd > ../../tr_run_$tt.log 2>&1
229 echo '' >> ../../tr_run_$tt.log 2>&1
230
231 ./testreport -MPI 3 -adm -of ../tools/build_options/linux_amd64_ifort11 \
232 -devel -q $sendCmd >> ../../tr_run_$tt.log 2>&1
233
234 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
235 ;;
236
237 'iad4' )
238
239 ./testreport -MPI 3 -ur4 -adm -of ../tools/build_options/linux_amd64_ifort11 \
240 -devel -nc -ncad -repl_mk do_make_syntax.sh -obj -dd > ../../tr_run_$tt.log 2>&1
241 echo '' >> ../../tr_run_$tt.log 2>&1
242
243 ./testreport -MPI 3 -ur4 -adm -of ../tools/build_options/linux_amd64_ifort11 \
244 -devel -q -match 5 $sendCmd >> ../../tr_run_$tt.log 2>&1
245
246 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
247 ;;
248
249 'imp2')
250
251 export OMP_NUM_THREADS=2
252 export KMP_STACKSIZE=400m
253
254 ./testreport -MPI 2 -mth -of ../tools/build_options/linux_amd64_ifort11 \
255 -devel -nc -repl_mk do_make_syntax.sh -obj -dd > ../../tr_run_$tt.log 2>&1
256 echo '' >> ../../tr_run_$tt.log 2>&1
257
258 ./testreport -MPI 2 -mth -of ../tools/build_options/linux_amd64_ifort11 \
259 -devel -q $sendCmd >> ../../tr_run_$tt.log 2>&1
260
261 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
262
263 #- test restart:
264 echo '' >> ../../tr_run_$tt.log 2>&1
265 ../tools/do_tst_2+2 -mpi $sendCmd >> ../../tr_run_$tt.log 2>&1
266 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
267 ;;
268
269 'iur4')
270
271 ./testreport -MPI 3 -ur4 -of ../tools/build_options/linux_amd64_ifort11 \
272 -devel -nc -repl_mk do_make_syntax.sh -obj -dd > ../../tr_run_$tt.log 2>&1
273 echo '' >> ../../tr_run_$tt.log 2>&1
274
275 ./testreport -MPI 3 -ur4 -of ../tools/build_options/linux_amd64_ifort11 \
276 -devel -q -match 5 $sendCmd >> ../../tr_run_$tt.log 2>&1
277
278 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
279
280 #- test restart:
281 echo '' >> ../../tr_run_$tt.log 2>&1
282 ../tools/do_tst_2+2 -mpi $sendCmd >> ../../tr_run_$tt.log 2>&1
283 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
284 ;;
285
286 'gadm')
287
288 ./testreport -MPI 3 -adm -of ../tools/build_options/linux_amd64_gfortran \
289 -devel -ncad -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
290
291 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
292 ;;
293
294 'gads')
295
296 ./testreport -adm -of ../tools/build_options/linux_amd64_gfortran \
297 -devel -ncad -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
298
299 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
300 ;;
301
302 'gad4')
303
304 ./testreport -adm -ur4 -of ../tools/build_options/linux_amd64_gfortran \
305 -devel -ncad -nc -match 5 $sendCmd >> ../../tr_run_$tt.log 2>&1
306
307 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
308 ;;
309
310 'tapAD')
311
312 ./testreport -tap -adm -of ../tools/build_options/linux_amd64_gfortran \
313 -match $MC $sendCmd >> ../../tr_run_$tt.log 2>&1
314
315 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
316 ;;
317
318 'tapTL')
319
320 ./testreport -tap -tlm -of ../tools/build_options/linux_amd64_gfortran \
321 -match $MC $sendCmd >> ../../tr_run_$tt.log 2>&1
322
323 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
324 ;;
325
326 'g7a')
327
328 ./testreport -adm -of ../tools/build_options/linux_amd64_g77 \
329 -skd 'halfpipe_streamice' \
330 -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
331
332 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
333 ;;
334
335 'gmp2')
336
337 export OMP_NUM_THREADS=2
338 export GOMP_STACKSIZE=400m
339
340 ./testreport -MPI 2 -mth -of ../tools/build_options/linux_amd64_gfortran \
341 -devel -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
342
343 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
344
345 #- test restart:
346 echo '' >> ../../tr_run_$tt.log 2>&1
347 ../tools/do_tst_2+2 -mpi $sendCmd >> ../../tr_run_$tt.log 2>&1
348 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
349 ;;
350
351 'gmpi')
352
353 ./testreport -MPI 3 -of ../tools/build_options/linux_amd64_gfortran \
354 -devel -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
355
356 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
357
358 #- test restart:
359 echo '' >> ../../tr_run_$tt.log 2>&1
360 ../tools/do_tst_2+2 -mpi $sendCmd >> ../../tr_run_$tt.log 2>&1
361 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
362 ;;
363
364 'gmp4')
365
366 ./testreport -MPI 3 -ur4 -of ../tools/build_options/linux_amd64_gfortran \
367 -devel -nc -match 5 $sendCmd >> ../../tr_run_$tt.log 2>&1
368
369 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
370
371 #- test restart:
372 echo '' >> ../../tr_run_$tt.log 2>&1
373 ../tools/do_tst_2+2 -mpi $sendCmd >> ../../tr_run_$tt.log 2>&1
374 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
375 ;;
376
377 'gfo')
378
379 ./testreport -of ../tools/build_options/linux_amd64_gfortran \
380 -devel -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
381
382 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
383
384 #- test restart:
385 echo '' >> ../../tr_run_$tt.log 2>&1
386 ../tools/do_tst_2+2 $sendCmd >> ../../tr_run_$tt.log 2>&1
387 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
388 ;;
389
390 'gfo4')
391
392 ./testreport -ur4 -of ../tools/build_options/linux_amd64_gfortran \
393 -devel -nc -match 5 $sendCmd >> ../../tr_run_$tt.log 2>&1
394
395 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
396
397 #- test restart:
398 echo '' >> ../../tr_run_$tt.log 2>&1
399 ../tools/do_tst_2+2 $sendCmd >> ../../tr_run_$tt.log 2>&1
400 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
401 ;;
402
403 'g77')
404
405 ./testreport -of ../tools/build_options/linux_amd64_g77 \
406 -skd 'fizhi-cs-32x32x40 fizhi-cs-aqualev20 halfpipe_streamice internal_wave tutorial_advection_in_gyre' \
407 -nc $sendCmd >> ../../tr_run_$tt.log 2>&1
408
409 sed -n "/ email /,/^======== End of testreport / p" ../../tr_run_$tt.log
410
411 #- test restart:
412 echo '' >> ../../tr_run_$tt.log 2>&1
413 ../tools/do_tst_2+2 $sendCmd >> ../../tr_run_$tt.log 2>&1
414 sed -n '/^===== Summary /,$ p' ../../tr_run_$tt.log
415 ;;
416
417 *) echo "unrecognized test suffix '$tt' <== skipped" ;;
418 esac
419
420 set +x
421 cd ../..
422
423 else
424 echo "error: missing dir $gcmDIR/verification"
425 fi
426
427 done
428
429 if test $1 = gfort ; then
430 day=`date +%d`
431 echo " day in the month='${day}'"
432 if test $day = 01 -a -f git_Hash ; then
433 ls -l git_Hash
434 echo -n ' git_Hash: '
435 cat git_Hash
436 echo "Remove file 'git_Hash' to force tomorrow 'tap' testing"
437 rm -f git_Hash
438 fi
439 fi

  ViewVC Help
Powered by ViewVC 1.1.22