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

Annotation of /MITgcm/tools/example_scripts/csail/test_baudelaire

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


Revision 1.27 - (hide annotations) (download)
Wed Jun 29 16:27:23 2016 UTC (7 years, 10 months ago) by jmc
Branch: MAIN
Changes since 1.26: +10 -2 lines
from Contrib verification_other:
 - add experiment "global_oce_cs32" to gfortran+mpi test
 - add experiment "global_oce_biogeo_bling" to ifort test

1 jmc 1.1 #! /usr/bin/env bash
2    
3 jmc 1.27 # $Header: /u/gcmpack/MITgcm/tools/example_scripts/csail/test_baudelaire,v 1.26 2016/05/20 19:16:00 jmc Exp $
4 jmc 1.1
5 jmc 1.23 # 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 jmc 1.1
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 jmc 1.4 # 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 jmc 1.1
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 jmc 1.19 # checkOut=2 : download new code ;
34 jmc 1.20 # =3 : skip download but, if sepDir, use a new copy
35 jmc 1.19 # =1 : update code (if no existing code -> swith to 2)
36     # =0 : use existing code (if no existing code -> swith to 2)
37 jmc 1.11 dInWeek=`date +%a`
38 jmc 1.20 outDir=`hostname -s`
39     TESTDIR="/scratch/jmc/test_${outDir}"
40 jmc 1.23 outDir="${outDir}-${tst_grp}"
41 jmc 1.3 MC=13
42 jmc 1.1 sepDir=1
43     option=
44 jmc 1.20 #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 jmc 1.23 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 jmc 1.1
56 jmc 1.19 #option="-nc" ; checkOut=1
57     #option="-q" ; checkOut=1
58 jmc 1.1
59     TODAY=`date +%d`
60     tdir=$TESTDIR
61 jmc 1.19 if test $checkOut != 2 ; then
62 jmc 1.7 if test -e $tdir/MITgcm/CVS ; then
63     echo $tdir/MITgcm/CVS 'exist'
64 jmc 1.19 if test $sepDir = 0 -a $checkOut = 1 ; then
65 jmc 1.15 echo -n "Update the MITgcm code using: $cmdCVS ..."
66     cd $tdir/MITgcm
67 jmc 1.7 $cmdCVS update -P -d
68 jmc 1.15 echo " done"
69 jmc 1.7 fi
70 jmc 1.1 else
71 jmc 1.7 echo -n $tdir/MITgcm 'missing ; '
72 jmc 1.19 checkOut=2
73 jmc 1.1 fi
74     fi
75 jmc 1.19 if test $checkOut = 2 ; then
76 jmc 1.1 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     else
89     cd $tdir
90     fi
91    
92     #------------------------------------------------------------------------
93    
94     firstTst=`echo $tst_list | awk '{print $1}'`
95     last_Tst=`echo $tst_list | awk '{print $NF}'`
96     for tt in $tst_list
97     do
98    
99 jmc 1.5 echo "================================================================"
100     typ=`echo $tt | sed 's/+rs//'`
101 jmc 1.22 #- define list of additional experiences to test:
102     addExp=''
103     if test $typ = 'mp2' -o $typ = 'ifc' ; then
104 jmc 1.24 addExp="offline_cheapaml atm_gray"
105     fi
106 jmc 1.27 if test $typ = 'gfo' -o $typ = 'ifc' ; then
107 jmc 1.26 addExp="$addExp global_oce_biogeo_bling"
108     fi
109 jmc 1.27 if test $typ = 'mpi' ; then
110     addExp="$addExp global_oce_cs32"
111     fi
112 jmc 1.26 if test $typ = 'gfo' ; then
113 jmc 1.24 addExp="$addExp shelfice_remeshing"
114 jmc 1.22 fi
115 jmc 1.5 #- check day and time:
116     curDay=`date +%d` ; curHour=`date +%H`
117     if [ $curDay -ne $TODAY ] ; then
118     date ; echo "day is over => skip test $typ"
119     continue
120     fi
121     if [ $curHour -ge 18 ] ; then
122     date ; echo "too late to run test $typ"
123     continue
124     fi
125 jmc 1.19 if test $sepDir = 0 -a "x$option" != x -a $tt != $last_Tst ; then
126     echo "using option='$option' prevent multi-tests => skip test $typ"
127     continue
128     fi
129 jmc 1.5 #- clean-up old output files
130     rm -f $tdir/output_${typ}*
131 jmc 1.12 touch $tdir/output_$tt
132 jmc 1.5 if test $sepDir = 1 ; then
133     new_dir="MITgcm_$typ"
134 jmc 1.20 reUse=1 ; if [ $checkOut -ge 2 ] ; then reUse=0 ; fi
135     if test -d $new_dir/CVS -a $reUse = 1 ; then
136 jmc 1.5 pushd $new_dir
137 jmc 1.14 if test $tt != $typ ; then
138     ( cd verification ; ../tools/do_tst_2+2 -clean )
139     fi
140 jmc 1.19 if test $checkOut = 1 ; then
141     echo -n "Update the MITgcm code using: $cmdCVS ..."
142     $cmdCVS update -P -d
143     echo " done"
144     fi
145 jmc 1.5 else
146 jmc 1.21 if test -d prev ; then
147     #-- save previous summary:
148     oldS=`ls -t ${new_dir}/verification/tr_${outDir}_*/summary.txt 2> /dev/null | head -1`
149     if test "x$oldS" != x ; then cp -p -f $oldS prev/tr_out.$typ ; fi
150     if test $tt != $typ ; then
151     oldS=`ls -t ${new_dir}/verification/rs_${outDir}_*/summary.txt 2> /dev/null | head -1`
152     if test "x$oldS" != x ; then cp -p -f $oldS prev/rs_out.$typ ; fi
153     fi
154     fi
155 jmc 1.5 test -e $new_dir && rm -rf $new_dir
156     mkdir $new_dir
157     pushd $new_dir
158     cp -ra ../MITgcm/* .
159 jmc 1.22 #-- download additional experience from Contrib:
160     for exp2add in $addExp ; do
161     echo " add dir: $exp2add (from Contrib:verification_other)"
162     ( cd verification ; $cmdCVS co -P -d $exp2add \
163     MITgcm_contrib/verification_other/$exp2add > /dev/null )
164 jmc 1.27 if test $exp2add = 'global_oce_cs32' ; then
165     echo " link dir 'other_input/gael_oce_cs32_input' to 'input_fields'"
166     ( cd verification/global_oce_cs32
167     ln -s ../../../other_input/gael_oce_cs32_input input_fields )
168     fi
169 jmc 1.22 done
170 jmc 1.5 fi
171 jmc 1.1 else
172 jmc 1.5 pushd MITgcm
173 jmc 1.1 fi
174 jmc 1.5 cd verification
175 jmc 1.1
176 jmc 1.5 #-- set the testreport command:
177 jmc 1.7 comm="./testreport"
178     if test $typ = 'g7a' -o $typ = 'adm' -o $typ = 'mpa' ; then
179 jmc 1.12 comm="$comm -adm"
180 jmc 1.18 elif test $typ = 'oad' ; then
181     comm="$comm -oad"
182 jmc 1.11 elif test $typ = 'tlm' ; then
183 jmc 1.12 comm="$comm -tlm"
184 jmc 1.5 elif test $typ = 'mth' -o $typ = 'mp2' ; then
185 jmc 1.4 export GOMP_STACKSIZE=400m
186 jmc 1.5 export OMP_NUM_THREADS=2
187     comm="$comm -mth"
188 jmc 1.17 else
189     comm="$comm -md cyrus-makedepend"
190 jmc 1.5 fi
191 jmc 1.20 comm="$comm -odir $outDir -a jmc@mitgcm.org"
192 jmc 1.5 #-- set the optfile (+ mpi & match-precision)
193     MPI=0
194     case $typ in
195     'g77'|'g7a') OPTFILE='../tools/build_options/linux_amd64_g77' ;;
196 jmc 1.18 'gfo'|'adm'|'oad'|'tlm'|'mth') comm="$comm -match $MC -devel"
197 jmc 1.11 OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
198 jmc 1.20 'ifc') comm="$comm -devel"
199     OPTFILE='../tools/build_options/linux_amd64_ifort11' ;;
200 jmc 1.5 'pgi') OPTFILE='../tools/build_options/linux_amd64_pgf77' ;;
201 jmc 1.11 'mpa'|'mpi'|'mp2') comm="$comm -match $MC -devel" ; MPI=6
202     OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
203 jmc 1.5 *) OPTFILE= ;;
204     esac
205     #-- set MPI command:
206 jmc 1.8 if test $MPI != 0 ; then
207     if test $typ = 'mp2' ; then MPI=3 ; fi
208 jmc 1.7 if test $typ = 'mpa' ; then
209 jmc 1.6 EXE="mpirun -np TR_NPROC ./mitgcmuv_ad"
210 jmc 1.5 else
211 jmc 1.6 EXE="mpirun -np TR_NPROC ./mitgcmuv"
212 jmc 1.5 fi
213     fi
214 jmc 1.1
215 jmc 1.7 #-- set specific Env Vars:
216 jmc 1.18 if test $typ = 'oad' ; then
217     source ~jmc/mitgcm/bin/setenv_OpenAD.sh
218     fi
219 jmc 1.7 if test $typ = 'ifc' ; then
220     source /srv/software/intel/intel-11.1.073/bin/ifortvars.sh intel64
221     fi
222     if test $typ = 'pgi' ; then
223 jmc 1.8 #listT='fizhi-cs-32x32x40 fizhi-cs-aqualev20'
224 jmc 1.7 export PGI=/srv/software/pgi/pgi-10.9
225     export PATH="$PATH:$PGI/linux86-64/10.9/bin"
226     export LM_LICENSE_FILE=$PGI/license.dat
227     fi
228    
229 jmc 1.19 if test $sepDir = 0 -a "x$option" = x -a $tt = $firstTst -a $checkOut != 2 ; then
230 jmc 1.1 #-- cleaning:
231 jmc 1.5 echo "======================"
232 jmc 1.12 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
233 jmc 1.1 cmdCLN="./testreport -clean"
234 jmc 1.12 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
235     $cmdCLN >> $tdir/output_$tt 2>&1
236 jmc 1.5 echo "======================"
237 jmc 1.12 echo "" | tee -a $tdir/output_$tt
238 jmc 1.1 fi
239    
240 jmc 1.5 #-- run the testreport command:
241 jmc 1.12 echo -n "Running testreport using:" | tee -a $tdir/output_$tt
242 jmc 1.1 if test "x$OPTFILE" != x ; then
243     comm="$comm -of=$OPTFILE"
244     fi
245 jmc 1.12 if test $MPI = 0 ; then echo '' | tee -a $tdir/output_$tt
246     else echo " (EXE='$EXE')" | tee -a $tdir/output_$tt
247 jmc 1.8 comm="$comm -MPI $MPI -command \"\$EXE\""
248     fi
249 jmc 1.1 if test "x$option" != x ; then comm="$comm $option" ; fi
250 jmc 1.8 #if test $typ = 'pgi' ; then comm="$comm -t \"\$listT\"" ; fi
251 jmc 1.12 echo " \"eval $comm\"" | tee -a $tdir/output_$tt
252 jmc 1.1 echo "======================"
253 jmc 1.12 eval $comm >> $tdir/output_$tt 2>&1
254     sed -n "/^An email /,/^======== End of testreport / p" $tdir/output_$tt
255     echo "" | tee -a $tdir/output_$tt
256 jmc 1.1
257 jmc 1.5 #-- also test restart (test 2+2=4)
258     if test $tt != $typ
259     then
260 jmc 1.12 echo "testing restart using:" | tee -a $tdir/output_$tt
261 jmc 1.20 comm="../tools/do_tst_2+2 -o $outDir -a jmc@mitgcm.org"
262 jmc 1.8 if test $MPI = 0 ; then
263 jmc 1.12 echo " \"$comm\"" | tee -a $tdir/output_$tt
264 jmc 1.8 echo "======================"
265 jmc 1.12 $comm >> $tdir/output_$tt 2>&1
266 jmc 1.8 else
267 jmc 1.12 echo " \"$comm -mpi -exe $EXE\"" | tee -a $tdir/output_$tt
268 jmc 1.5 echo "======================"
269 jmc 1.12 $comm -mpi -exe "$EXE" >> $tdir/output_$tt 2>&1
270 jmc 1.5 fi
271     echo ; cat tst_2+2_out.txt
272     echo
273 jmc 1.1 fi
274 jmc 1.5 export OMP_NUM_THREADS=1
275 jmc 1.1
276 jmc 1.5 if test $sepDir = 0 ; then
277     #-- cleaning:
278 jmc 1.7 echo "======================"
279 jmc 1.12 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
280 jmc 1.7 if test $tt != $typ ; then
281     cmdCLN="../tools/do_tst_2+2 -clean"
282 jmc 1.12 echo " clean tst_2+2 running: $cmdCLN" | tee -a $tdir/output_$tt
283     $cmdCLN >> $tdir/output_$tt 2>&1
284 jmc 1.7 fi
285     if test $tt != $last_Tst ; then
286     cmdCLN="./testreport -clean"
287 jmc 1.12 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
288     $cmdCLN >> $tdir/output_$tt 2>&1
289 jmc 1.7 fi
290     echo "======================"
291     echo
292     fi
293     popd
294 jmc 1.1
295     done

  ViewVC Help
Powered by ViewVC 1.1.22