/[MITgcm]/MITgcm/tools/tst_2+2
ViewVC logotype

Diff of /MITgcm/tools/tst_2+2

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

revision 1.1 by jmc, Tue Dec 25 22:07:54 2007 UTC revision 1.3 by jmc, Sat Feb 28 18:55:48 2009 UTC
# Line 19  rnp_loc() Line 19  rnp_loc()
19    
20  #---------------------------  #---------------------------
21    
 #- default:  
 Nit=2  
 prt=1    # 1 = print some informations ; 2 = print more informations  
 action=1  
 cmd='mv -f'  
 tmpDir='temp_tst'  
   
 #- executable:  
 mpi=0  
 if [ $mpi -ge 1 ]  
 then gcmExc=run_ifc_mpi  
 else gcmExc=mitgcmuv  
 fi  
   
22  #- exit status:  #- exit status:
23  # 0 -> test is successful  # 0 -> test is successful
24  # 1 -> fail in 1rst run  # 1 -> fail in 1rst run
25  # 2 -> fail in 2nd  run  # 2 -> fail in 2nd  run
26  # 3 -> fail in 3rd  run  # 3 -> fail in 3rd  run
27  # 4 -> pickup*.data (written at the end of 2+2 & 4 it run) are different  # 4 -> pickup*.data (written at the end of 2+2 & 4 it run) are different
28  # 5 -> pickup*.meta (written at the end of 2+2 & 4 it run) are different  # 5 -> pickup*.meta (written at the end of 2+2 & 4 it run) are different
29  # 6 -> missing 'data.tst' file (removed or not yet generated ?)  # 6 -> missing 'data.tst' file (removed or not yet generated ?)
# Line 45  fi Line 31  fi
31  # 8 -> missing information (in standard output of previous run) about pickup  # 8 -> missing information (in standard output of previous run) about pickup
32  # 9 -> error in argument list  # 9 -> error in argument list
33    
34    #- default:
35    Nit=2
36    prt=1    # 1 = print some informations ; 2 = print more informations
37    action=1
38    cmdMV='mv -f'
39    tmpDir='temp_tst'
40    wait2run=0  # if needs sometime for file system syncro on all nodes
41    
42    #- default executable, command-line , using MPI:
43    gcmEXE=./mitgcmuv
44    cmdEXE=
45    mpi=0
46    
47  nArg=$#  nArg=$#
48  if [ $nArg -ge 3 ]  prev=
49  then  for xx ; do
50   if test $2 = '-exe' ; then gcmExc=$3 ; nArg=`expr $nArg - 2` ; fi    #echo "xx='$xx'"
51   if test $1 = '-exe' ; then gcmExc=$2 ; shift ; shift ; nArg=$# ; fi    # If the previous option needs an argument, assign it.
52  fi    if test -n "$prev"; then
53        eval "$prev=\$xx"
54        prev=
55        nArg=`expr $nArg - 2`
56        continue
57      fi
58    
59      case $xx in
60      -mpi     ) mpi=1 ; nArg=`expr $nArg - 1` ;;
61      -exe     ) prev=gcmEXE ;;
62      -command ) prev=cmdEXE ;;
63              *) flag=$xx ;;
64      esac
65    done
66    echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"
67    echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'"
68    
69  case $nArg in  case $nArg in
70    1) ;;    1) ;;
71     *) echo "Usage: `basename $0` flag [-exe EXECUTABLE]"     *) echo "Usage: `basename $0` flag [-mpi] [-exe EXECUTABLE] [-command COMMAND]"
72        echo " Check restart: compare 1 run of 2 x $Nit it long"        echo " Check restart: compare 1 run of 2 x $Nit it long"
73        echo "     with 2 consecutive runs of $Nit it long each"        echo "     with 2 consecutive runs of $Nit it long each"
74        echo " where: flag = 0 -> prepare (from a previous run) pickup & data files"        echo " where: flag = 0 -> prepare (from a previous run) pickup & data files"
75        echo "        flag = 1 -> do the 3 runs (with EXECUTABLE, default=mitgcmuv)"        echo "        flag = 1 -> do the 3 runs (using COMMAND"
76          echo "                         or simply using EXECUTABLE, default=$gcmEXE)"
77        echo "        flag = 2 -> compare std_outp"        echo "        flag = 2 -> compare std_outp"
78        echo "        flag = 3 -> compare pickup files"        echo "        flag = 3 -> compare pickup files"
79        echo "        flag = 4 -> clean-up output files"        echo "        flag = 4 -> clean-up output files"
80        echo "      flag = All -> do 0,1,2,3,4 sequentially"        echo "      flag = All -> do 0,1,2,3,4 sequentially"
81        exit 9 ;;        exit 9 ;;
82  esac  esac
 flag=$1  
83    
84    #-- set the run-command :
85    if test "x$cmdEXE" = x
86    then
87      if [ $mpi -ge 1 ] ; then
88        cmdEXE="mpirun -machinefile ../../mf -v -np 2 $gcmEXE"
89      else
90        cmdEXE=$gcmEXE
91      fi
92    fi
93    #if [ $mpi -ge 1 ] ; then cmdEXE=run_mpi ; fi
94    #echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'"
95    echo "cmdEXE='$cmdEXE'"
96  #=========================  #=========================
97    
98  if test $flag = '0' -o $flag = 'All' ; then  if test $flag = '0' -o $flag = 'All' ; then
99  #----------------------------------------------------------------------  #----------------------------------------------------------------------
100  # last pickup written (from previous run):  # last pickup written (from previous run):
101  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
102  then outpRun='STDOUT.0000'  then outpRun='STDOUT.0000'
103  else outpRun='output.txt'  else outpRun='output.txt'
104  fi  fi
105  if test -r $outpRun  if test -r $outpRun
106  then  then
107  # grep ' %CHECKPOINT ' $outpRun | tail -1  # grep ' %CHECKPOINT ' $outpRun | tail -1
108    lastPick=`grep ' %CHECKPOINT ' $outpRun | sed 's/^.*%CHECKPOINT //' | tail -1`    lastPick=`grep ' %CHECKPOINT ' $outpRun | sed 's/^.*%CHECKPOINT //' | tail -1`
109    if test "x$lastPick" = x    if test "x$lastPick" = x
110    then    then
111      echo "no pickup information written in '$outpRun' from previous run"      echo "no pickup information written in '$outpRun' from previous run"
112      exit 8      exit 8
113    else    else
# Line 89  then Line 115  then
115      zz=`echo $lastPick | awk '{print $2}'`      zz=`echo $lastPick | awk '{print $2}'`
116      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; zz='$zz'"      echo "from previous run std.outp, lastPick='$lastPick' ; iter='$iter' ; zz='$zz'"
117    fi    fi
118  else  else
119    echo "no standard output file '$outpRun' from previous run"    echo "no standard output file '$outpRun' from previous run"
120    exit 7    exit 7
121  fi  fi
# Line 112  else Line 138  else
138      for xx in $listF      for xx in $listF
139      do      do
140        new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"`        new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"`
141        if [ $prt -ge 2 ] ; then echo '  '$cmd $xx $new ; fi        if [ $prt -ge 2 ] ; then echo '  '$cmdMV $xx $new ; fi
142        if test $action = 1 ; then    $cmd $xx $new ; fi        if test $action = 1 ; then    $cmdMV $xx $new ; fi
143      done      done
144    done    done
145   fi   fi
# Line 149  mv -f data.tmp_$$ data.tst Line 175  mv -f data.tmp_$$ data.tst
175  sed "/^ *\&PARM03/a \ nIter0=$iter," data.tst > data.tmp_$$  sed "/^ *\&PARM03/a \ nIter0=$iter," data.tst > data.tmp_$$
176  mv -f data.tmp_$$ data.tst  mv -f data.tmp_$$ data.tst
177  echo "prepare file 'data.tst' : done"  echo "prepare file 'data.tst' : done"
178  if  [ $prt -ge 1 ] ; then  if  [ $prt -ge 1 ] ; then
179    echo ' diff data.tst data' ; diff data.tst data ; echo ' ' ;    echo ' diff data.tst data' ; diff data.tst data ; echo ' ' ;
180  fi  fi
181  #---- clean up current dir: move output to temp_tst dir:  #---- clean up current dir: move output to temp_tst dir:
# Line 158  if test $action = 1 ; then Line 184  if test $action = 1 ; then
184   mkdir $tmpDir   mkdir $tmpDir
185   mv -f *.data $tmpDir   mv -f *.data $tmpDir
186   mv -f *.meta $tmpDir   mv -f *.meta $tmpDir
187   mv -f *.txt $tmpDir   mv -f *.txt $tmpDir 2> /dev/null
188     mv -f STD???.0[0-9][0-9][0-9] $tmpDir
189   listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`   listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1`
190   if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi   if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi
191  #- move main parameter file "data":  #- move main parameter file "data":
# Line 177  if test $action = 1 ; then Line 204  if test $action = 1 ; then
204      for ll in $listN      for ll in $listN
205      do      do
206        sed "$ll s/^./#&/" data.pkg > data.tmp_$$        sed "$ll s/^./#&/" data.pkg > data.tmp_$$
207        if  [ $prt -ge 1 ] ; then echo ' changes in data.pkg'        if  [ $prt -ge 1 ] ; then echo ' changes in data.pkg'
208          diff data.tmp_$$ data.pkg ; echo ' ' ; fi          diff data.tmp_$$ data.pkg ; echo ' ' ; fi
209        mv -f data.tmp_$$ data.pkg        mv -f data.tmp_$$ data.pkg
210      done      done
# Line 213  num1c=`printf "%10.10i\n" $num1` Line 240  num1c=`printf "%10.10i\n" $num1`
240  num2c=`printf "%10.10i\n" $num2`  num2c=`printf "%10.10i\n" $num2`
241  echo " start-end iter: $num0 , $num1 , $num2"  echo " start-end iter: $num0 , $num1 , $num2"
242  echo " sufix: '$num0c' '$num1c' '$num2c'"  echo " sufix: '$num0c' '$num1c' '$num2c'"
243  echo ' gcmExc='$gcmExc  echo ' cmdEXE='$cmdEXE
244  #exit  #exit
245  #---------------------------  #---------------------------
246    
# Line 238  rm -f STDERR.0000 Line 265  rm -f STDERR.0000
265  cp -p data.tst data  cp -p data.tst data
266  echo '==> START RUN 2 x' $Nit 'it'  echo '==> START RUN 2 x' $Nit 'it'
267  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
268  then ./$gcmExc std_outp.2it > TTT.out.2it 2>&1  then
269  else ./$gcmExc > std_outp.2it       sleep $wait2run
270         $cmdEXE > TTT.out.2it 2>&1
271         mv STDOUT.0000 std_outp.2it
272         cat TTT.out.2it
273    else $cmdEXE > std_outp.2it
274  fi  fi
275  mv STDERR.0000 std__err.2it  mv STDERR.0000 std__err.2it
276  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`  out=`egrep -c 'STOP ABNORMAL END' std_outp.2it`
# Line 255  do Line 286  do
286    rnp_loc $xx.ckptA $xx.$num2c    rnp_loc $xx.ckptA $xx.$num2c
287  done  done
288  mv *.0??.0??.* $dir1  mv *.0??.0??.* $dir1
289  txtF=`ls -1 *.txt 2> /dev/null`  txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`
290  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir1  mv R?.data R?.meta DR?.data DR?.meta PHref{C,F}.??ta $txtF $dir1
291  listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`  listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1`
292  if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi  if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi
293  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )  #---  2nd run ( Nit iter , restart from same Iter = num0 as 1rst run )
294  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data  sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp
295    mv -f data.tmp data
296  echo '==> START RUN 1iA'  echo '==> START RUN 1iA'
297  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
298  then ./$gcmExc std_outp.1iA > TTT.out.1iA 2>&1  then
299  else ./$gcmExc > std_outp.1iA       sleep $wait2run
300         $cmdEXE > TTT.out.1iA 2>&1
301         mv STDOUT.0000 std_outp.1iA
302         cat TTT.out.1iA
303    else $cmdEXE > std_outp.1iA
304  fi  fi
305  mv STDERR.0000 std__err.1iA  mv STDERR.0000 std__err.1iA
306  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA`
# Line 278  do Line 314  do
314   rnp_loc $xx.ckptA $xx.$num1c   rnp_loc $xx.ckptA $xx.$num1c
315  done  done
316  mv *.0??.0??.* $dir2  mv *.0??.0??.* $dir2
317  txtF=`ls -1 *.txt 2> /dev/null`  txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`
318  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2
319  listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`  listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1`
320  if test "x$listS" != x ; then mv $dir2/pickup*.${num0c}* . ; fi  if test "x$listS" != x ; then mv $dir2/pickup*.${num0c}* . ; fi
# Line 288  sed "s/^ nIter0=$num0/ nIter0=$num1/g" d Line 324  sed "s/^ nIter0=$num0/ nIter0=$num1/g" d
324  mv -f data.tmp data  mv -f data.tmp data
325  echo '==> START RUN 1iB'  echo '==> START RUN 1iB'
326  if [ $mpi -ge 1 ]  if [ $mpi -ge 1 ]
327  then ./$gcmExc std_outp.1iB > TTT.out.1iB 2>&1  then
328  else ./$gcmExc > std_outp.1iB       sleep $wait2run
329         $cmdEXE > TTT.out.1iB 2>&1
330         mv STDOUT.0000 std_outp.1iB
331         cat TTT.out.1iB
332    else $cmdEXE > std_outp.1iB
333  fi  fi
334  mv STDERR.0000 std__err.1iB  mv STDERR.0000 std__err.1iB
335  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`  out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB`
# Line 303  do Line 343  do
343   rnp_loc $xx.ckptA $xx.$num2c   rnp_loc $xx.ckptA $xx.$num2c
344  done  done
345  mv *.0??.0??.* $dir3  mv *.0??.0??.* $dir3
346  txtF=`ls -1 *.txt 2> /dev/null`  txtF=`ls -1 *.txt STD???.00?? 2> /dev/null`
347  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3  mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3
348  listS=`ls $dir3/pickup*.${num0c}* 2> /dev/null | head -1`  listS=`ls $dir3/pickup*.${num0c}* 2> /dev/null | head -1`
349  if test "x$listS" != x ; then mv $dir3/pickup*.${num0c}* . ; fi  if test "x$listS" != x ; then mv $dir3/pickup*.${num0c}* . ; fi
# Line 329  fi Line 369  fi
369    
370  if test $flag = '3' -o $flag = 'All' ; then  if test $flag = '3' -o $flag = 'All' ; then
371  #----------------------------------------------------------------------  #----------------------------------------------------------------------
372  echo ' '  echo ' '
373  echo "== diff pickup files : end of 1rst run (2x$Nit it) & end of 3rd run (2nd $Nit it)"  echo "== diff pickup files : end of 1rst run (2x$Nit it) & end of 3rd run (2nd $Nit it)"
374  listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`  listP=`( cd $dir1 ; ls pickup*.$num2c* | sed 's/\..*//g' | uniq )`
375  chkmeta='Y'  chkmeta='Y'
# Line 351  do Line 391  do
391      echo ' diff' $dir1/$zz.$xx.meta $dir3      echo ' diff' $dir1/$zz.$xx.meta $dir3
392      diff $dir1/$zz.$xx.meta $dir3      diff $dir1/$zz.$xx.meta $dir3
393      out=$?      out=$?
394      if test $out != 0 ; then      if test $out != 0 ; then
395       echo 'Diff outp=' $out ' ==> stop'       echo 'Diff outp=' $out ' ==> stop'
396       exit 5       exit 5
397      fi      fi
# Line 363  fi Line 403  fi
403    
404  if test $flag = '4' -o $flag = 'All' ; then  if test $flag = '4' -o $flag = 'All' ; then
405  #-------------  #-------------
406  echo ' '  echo ' '
407  echo "== clean-up and reset :"  echo "== clean-up and reset :"
408   echo '--> remove output dir and output files:'   echo '--> remove output dir and output files:'
409   echo ' rm -rf' $dir1 $dir2 $dir3   echo ' rm -rf' $dir1 $dir2 $dir3
410   rm -rf $dir1 $dir2 $dir3   rm -rf $dir1 $dir2 $dir3
411   echo ' rm -f' std_????.?i?   echo ' rm -f' std_????.?i?
412   rm -f std_????.?i?   rm -f std_????.?i?
413     rm -f TTT.out.?i? 2> /dev/null
414   echo ' rm -f' data.pkg data.tst   echo ' rm -f' data.pkg data.tst
415   rm -f data.pkg data.tst   rm -f data.pkg data.tst
416  #- move back files from temp_tst dir:  #- move back files from temp_tst dir:

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22