/[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.25 - (hide annotations) (download)
Tue May 10 14:41:00 2016 UTC (8 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65w
Changes since 1.24: +2 -2 lines
remove "shelfice_remeshing" additional experiment from ifort test

1 jmc 1.1 #! /usr/bin/env bash
2    
3 jmc 1.25 # $Header: /u/gcmpack/MITgcm/tools/example_scripts/csail/test_baudelaire,v 1.24 2016/03/02 14:23:17 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.25 if test $typ = 'gfo' ; then
107 jmc 1.24 addExp="$addExp shelfice_remeshing"
108 jmc 1.22 fi
109 jmc 1.5 #- check day and time:
110     curDay=`date +%d` ; curHour=`date +%H`
111     if [ $curDay -ne $TODAY ] ; then
112     date ; echo "day is over => skip test $typ"
113     continue
114     fi
115     if [ $curHour -ge 18 ] ; then
116     date ; echo "too late to run test $typ"
117     continue
118     fi
119 jmc 1.19 if test $sepDir = 0 -a "x$option" != x -a $tt != $last_Tst ; then
120     echo "using option='$option' prevent multi-tests => skip test $typ"
121     continue
122     fi
123 jmc 1.5 #- clean-up old output files
124     rm -f $tdir/output_${typ}*
125 jmc 1.12 touch $tdir/output_$tt
126 jmc 1.5 if test $sepDir = 1 ; then
127     new_dir="MITgcm_$typ"
128 jmc 1.20 reUse=1 ; if [ $checkOut -ge 2 ] ; then reUse=0 ; fi
129     if test -d $new_dir/CVS -a $reUse = 1 ; then
130 jmc 1.5 pushd $new_dir
131 jmc 1.14 if test $tt != $typ ; then
132     ( cd verification ; ../tools/do_tst_2+2 -clean )
133     fi
134 jmc 1.19 if test $checkOut = 1 ; then
135     echo -n "Update the MITgcm code using: $cmdCVS ..."
136     $cmdCVS update -P -d
137     echo " done"
138     fi
139 jmc 1.5 else
140 jmc 1.21 if test -d prev ; then
141     #-- save previous summary:
142     oldS=`ls -t ${new_dir}/verification/tr_${outDir}_*/summary.txt 2> /dev/null | head -1`
143     if test "x$oldS" != x ; then cp -p -f $oldS prev/tr_out.$typ ; fi
144     if test $tt != $typ ; then
145     oldS=`ls -t ${new_dir}/verification/rs_${outDir}_*/summary.txt 2> /dev/null | head -1`
146     if test "x$oldS" != x ; then cp -p -f $oldS prev/rs_out.$typ ; fi
147     fi
148     fi
149 jmc 1.5 test -e $new_dir && rm -rf $new_dir
150     mkdir $new_dir
151     pushd $new_dir
152     cp -ra ../MITgcm/* .
153 jmc 1.22 #-- download additional experience from Contrib:
154     for exp2add in $addExp ; do
155     echo " add dir: $exp2add (from Contrib:verification_other)"
156     ( cd verification ; $cmdCVS co -P -d $exp2add \
157     MITgcm_contrib/verification_other/$exp2add > /dev/null )
158     done
159 jmc 1.5 fi
160 jmc 1.1 else
161 jmc 1.5 pushd MITgcm
162 jmc 1.1 fi
163 jmc 1.5 cd verification
164 jmc 1.1
165 jmc 1.5 #-- set the testreport command:
166 jmc 1.7 comm="./testreport"
167     if test $typ = 'g7a' -o $typ = 'adm' -o $typ = 'mpa' ; then
168 jmc 1.12 comm="$comm -adm"
169 jmc 1.18 elif test $typ = 'oad' ; then
170     comm="$comm -oad"
171 jmc 1.11 elif test $typ = 'tlm' ; then
172 jmc 1.12 comm="$comm -tlm"
173 jmc 1.5 elif test $typ = 'mth' -o $typ = 'mp2' ; then
174 jmc 1.4 export GOMP_STACKSIZE=400m
175 jmc 1.5 export OMP_NUM_THREADS=2
176     comm="$comm -mth"
177 jmc 1.17 else
178     comm="$comm -md cyrus-makedepend"
179 jmc 1.5 fi
180 jmc 1.20 comm="$comm -odir $outDir -a jmc@mitgcm.org"
181 jmc 1.5 #-- set the optfile (+ mpi & match-precision)
182     MPI=0
183     case $typ in
184     'g77'|'g7a') OPTFILE='../tools/build_options/linux_amd64_g77' ;;
185 jmc 1.18 'gfo'|'adm'|'oad'|'tlm'|'mth') comm="$comm -match $MC -devel"
186 jmc 1.11 OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
187 jmc 1.20 'ifc') comm="$comm -devel"
188     OPTFILE='../tools/build_options/linux_amd64_ifort11' ;;
189 jmc 1.5 'pgi') OPTFILE='../tools/build_options/linux_amd64_pgf77' ;;
190 jmc 1.11 'mpa'|'mpi'|'mp2') comm="$comm -match $MC -devel" ; MPI=6
191     OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
192 jmc 1.5 *) OPTFILE= ;;
193     esac
194     #-- set MPI command:
195 jmc 1.8 if test $MPI != 0 ; then
196     if test $typ = 'mp2' ; then MPI=3 ; fi
197 jmc 1.7 if test $typ = 'mpa' ; then
198 jmc 1.6 EXE="mpirun -np TR_NPROC ./mitgcmuv_ad"
199 jmc 1.5 else
200 jmc 1.6 EXE="mpirun -np TR_NPROC ./mitgcmuv"
201 jmc 1.5 fi
202     fi
203 jmc 1.1
204 jmc 1.7 #-- set specific Env Vars:
205 jmc 1.18 if test $typ = 'oad' ; then
206     source ~jmc/mitgcm/bin/setenv_OpenAD.sh
207     fi
208 jmc 1.7 if test $typ = 'ifc' ; then
209     source /srv/software/intel/intel-11.1.073/bin/ifortvars.sh intel64
210     fi
211     if test $typ = 'pgi' ; then
212 jmc 1.8 #listT='fizhi-cs-32x32x40 fizhi-cs-aqualev20'
213 jmc 1.7 export PGI=/srv/software/pgi/pgi-10.9
214     export PATH="$PATH:$PGI/linux86-64/10.9/bin"
215     export LM_LICENSE_FILE=$PGI/license.dat
216     fi
217    
218 jmc 1.19 if test $sepDir = 0 -a "x$option" = x -a $tt = $firstTst -a $checkOut != 2 ; then
219 jmc 1.1 #-- cleaning:
220 jmc 1.5 echo "======================"
221 jmc 1.12 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
222 jmc 1.1 cmdCLN="./testreport -clean"
223 jmc 1.12 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
224     $cmdCLN >> $tdir/output_$tt 2>&1
225 jmc 1.5 echo "======================"
226 jmc 1.12 echo "" | tee -a $tdir/output_$tt
227 jmc 1.1 fi
228    
229 jmc 1.5 #-- run the testreport command:
230 jmc 1.12 echo -n "Running testreport using:" | tee -a $tdir/output_$tt
231 jmc 1.1 if test "x$OPTFILE" != x ; then
232     comm="$comm -of=$OPTFILE"
233     fi
234 jmc 1.12 if test $MPI = 0 ; then echo '' | tee -a $tdir/output_$tt
235     else echo " (EXE='$EXE')" | tee -a $tdir/output_$tt
236 jmc 1.8 comm="$comm -MPI $MPI -command \"\$EXE\""
237     fi
238 jmc 1.1 if test "x$option" != x ; then comm="$comm $option" ; fi
239 jmc 1.8 #if test $typ = 'pgi' ; then comm="$comm -t \"\$listT\"" ; fi
240 jmc 1.12 echo " \"eval $comm\"" | tee -a $tdir/output_$tt
241 jmc 1.1 echo "======================"
242 jmc 1.12 eval $comm >> $tdir/output_$tt 2>&1
243     sed -n "/^An email /,/^======== End of testreport / p" $tdir/output_$tt
244     echo "" | tee -a $tdir/output_$tt
245 jmc 1.1
246 jmc 1.5 #-- also test restart (test 2+2=4)
247     if test $tt != $typ
248     then
249 jmc 1.12 echo "testing restart using:" | tee -a $tdir/output_$tt
250 jmc 1.20 comm="../tools/do_tst_2+2 -o $outDir -a jmc@mitgcm.org"
251 jmc 1.8 if test $MPI = 0 ; then
252 jmc 1.12 echo " \"$comm\"" | tee -a $tdir/output_$tt
253 jmc 1.8 echo "======================"
254 jmc 1.12 $comm >> $tdir/output_$tt 2>&1
255 jmc 1.8 else
256 jmc 1.12 echo " \"$comm -mpi -exe $EXE\"" | tee -a $tdir/output_$tt
257 jmc 1.5 echo "======================"
258 jmc 1.12 $comm -mpi -exe "$EXE" >> $tdir/output_$tt 2>&1
259 jmc 1.5 fi
260     echo ; cat tst_2+2_out.txt
261     echo
262 jmc 1.1 fi
263 jmc 1.5 export OMP_NUM_THREADS=1
264 jmc 1.1
265 jmc 1.5 if test $sepDir = 0 ; then
266     #-- cleaning:
267 jmc 1.7 echo "======================"
268 jmc 1.12 echo "Cleaning test directories:" | tee -a $tdir/output_$tt
269 jmc 1.7 if test $tt != $typ ; then
270     cmdCLN="../tools/do_tst_2+2 -clean"
271 jmc 1.12 echo " clean tst_2+2 running: $cmdCLN" | tee -a $tdir/output_$tt
272     $cmdCLN >> $tdir/output_$tt 2>&1
273 jmc 1.7 fi
274     if test $tt != $last_Tst ; then
275     cmdCLN="./testreport -clean"
276 jmc 1.12 echo " clean dir running: $cmdCLN" | tee -a $tdir/output_$tt
277     $cmdCLN >> $tdir/output_$tt 2>&1
278 jmc 1.7 fi
279     echo "======================"
280     echo
281     fi
282     popd
283 jmc 1.1
284     done

  ViewVC Help
Powered by ViewVC 1.1.22