--- MITgcm/tools/tst_2+2 2009/02/27 22:58:57 1.2 +++ MITgcm/tools/tst_2+2 2009/03/23 23:28:13 1.6 @@ -1,19 +1,8 @@ #! /usr/bin/env bash -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/tst_2+2,v 1.2 2009/02/27 22:58:57 jmc Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/tst_2+2,v 1.6 2009/03/23 23:28:13 jmc Exp $ # $Name: $ -run_mpi() -{ -# run_mpi output_file - echo "execute: '$RUNMPI'" - $RUNMPI - if test $# = 1 - then mv STDOUT.0000 $1 - echo 'mv STDOUT.0000' $1 - fi -} - rnp_loc() { # rnp_loc arg_1 arg_2 @@ -48,6 +37,7 @@ action=1 cmdMV='mv -f' tmpDir='temp_tst' +wait2run=0 # if needs sometime for file system syncro on all nodes #- default executable, command-line , using MPI: gcmEXE=./mitgcmuv @@ -73,8 +63,8 @@ *) flag=$xx ;; esac done -echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'" -echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'" +#echo "cmdEXE='$cmdEXE'" +#echo "nArg=$nArg ; mpi=$mpi ; flag='$flag'" case $nArg in 1) ;; @@ -94,13 +84,13 @@ #-- set the run-command : if test "x$cmdEXE" = x then - RUNMPI="mpirun -machinefile ../../mf -v -np 2 $gcmEXE" + if [ $mpi -ge 1 ] ; then + cmdEXE="mpirun -machinefile ../../mf -v -np 2 $gcmEXE" + else cmdEXE=$gcmEXE -else - RUNMPI="$cmdEXE" + fi fi -if [ $mpi -ge 1 ] ; then cmdEXE=run_mpi ; fi -echo "cmdEXE='$cmdEXE' ; RUNMPI='$RUNMPI'" +echo "cmdEXE='$cmdEXE'" #========================= if test $flag = '0' -o $flag = 'All' ; then @@ -145,7 +135,7 @@ listF=`ls -1 $yy.${zz}*` for xx in $listF do - new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"` + new=`echo $xx | sed "s/^$yy\.$zz/$yy.$sufx/"` if [ $prt -ge 2 ] ; then echo ' '$cmdMV $xx $new ; fi if test $action = 1 ; then $cmdMV $xx $new ; fi done @@ -156,7 +146,7 @@ echo "prepare parameter file 'data.tst' :" cp -p -f data data.tst listOut='startTime endTime nIter0 nTimeSteps nEndIter chkPtFreq pChkPtFreq globalFiles' -listOut=$listOut' useSingleCpuIO pickupSuff usePickupBeforeC54 mdsioLocalDir' +listOut=$listOut' pickupSuff usePickupBeforeC54 mdsioLocalDir' #- comment out (in data.tst) all parameters from list: 'listOut' for yy in $listOut do @@ -192,7 +182,7 @@ mkdir $tmpDir mv -f *.data $tmpDir mv -f *.meta $tmpDir - mv -f *.txt $tmpDir + mv -f *.txt $tmpDir 2> /dev/null mv -f STD???.0[0-9][0-9][0-9] $tmpDir listS=`ls $tmpDir/pickup*.${sufx}* 2> /dev/null | head -1` if test "x$listS" != x ; then mv $tmpDir/pickup*.${sufx}* . ; fi @@ -273,48 +263,59 @@ cp -p data.tst data echo '==> START RUN 2 x' $Nit 'it' if [ $mpi -ge 1 ] -then $cmdEXE std_outp.2it > TTT.out.2it 2>&1 +then + sleep $wait2run + $cmdEXE > TTT.out.2it 2>&1 + mv STDOUT.0000 std_outp.2it + cat TTT.out.2it else $cmdEXE > std_outp.2it fi mv STDERR.0000 std__err.2it out=`egrep -c 'STOP ABNORMAL END' std_outp.2it` if test $out != 0 then echo "==> RUN 2 x $Nit it : ABNORMAL END => exit" ; exit 1 ; fi -if test -f $pref.ckptA.001.001.data -then echo "==> END RUN 2 x $Nit it" -else echo "==> RUN 2 x $Nit it STOP without writing $pref => exit" ; exit 1 ; fi +listF=`ls -1 $pref.ckptA*.data 2> /dev/null` +if test "x$listF" = x +then echo "==> RUN 2 x $Nit it STOP without writing $pref => exit" ; exit 1 +else echo "==> END RUN 2 x $Nit it" ; fi listP=`ls pickup*.ckptA* | sed 's/\..*//g' | uniq` echo ' listP=' $listP for xx in $listP do rnp_loc $xx.ckptA $xx.$num2c done -mv *.0??.0??.* $dir1 -txtF=`ls -1 *.txt 2> /dev/null` -mv R?.data R?.meta DR?.data DR?.meta $txtF $dir1 +mv *.data *.meta $dir1 +txtF=`ls -1 *.txt STD???.00?? 2> /dev/null` +if test "x$txtF" != x ; then mv $txtF $dir1 ; fi listS=`ls $dir1/pickup*.${num0c}* 2> /dev/null | head -1` if test "x$listS" != x ; then mv $dir1/pickup*.${num0c}* . ; fi #--- 2nd run ( Nit iter , restart from same Iter = num0 as 1rst run ) -sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data +sed "s/^ nTimeSteps=$Dbl/ nTimeSteps=$Nit/g" data.tst > data.tmp +mv -f data.tmp data echo '==> START RUN 1iA' if [ $mpi -ge 1 ] -then $cmdEXE std_outp.1iA > TTT.out.1iA 2>&1 +then + sleep $wait2run + $cmdEXE > TTT.out.1iA 2>&1 + mv STDOUT.0000 std_outp.1iA + cat TTT.out.1iA else $cmdEXE > std_outp.1iA fi mv STDERR.0000 std__err.1iA out=`egrep -c 'STOP ABNORMAL END' std_outp.1iA` if test $out != 0 then echo "==> RUN 1iA : ABNORMAL END => exit" ; exit 2 ; fi -if test -f $pref.ckptA.001.001.data -then echo "==> END RUN 1iA" -else echo "==> RUN 1iA STOP without writing $pref => exit" ; exit 2 ; fi +listF=`ls -1 $pref.ckptA*.data 2> /dev/null` +if test "x$listF" = x +then echo "==> RUN 1iA STOP without writing $pref => exit" ; exit 2 +else echo "==> END RUN 1iA" ; fi for xx in $listP do rnp_loc $xx.ckptA $xx.$num1c done -mv *.0??.0??.* $dir2 -txtF=`ls -1 *.txt 2> /dev/null` -mv R?.data R?.meta DR?.data DR?.meta $txtF $dir2 +mv *.data *.meta $dir2 +txtF=`ls -1 *.txt STD???.00?? 2> /dev/null` +if test "x$txtF" != x ; then mv $txtF $dir2 ; fi listS=`ls $dir2/pickup*.${num0c}* 2> /dev/null | head -1` if test "x$listS" != x ; then mv $dir2/pickup*.${num0c}* . ; fi #--- 3rd run ( Nit iter , restart from 2nd ) @@ -323,23 +324,28 @@ mv -f data.tmp data echo '==> START RUN 1iB' if [ $mpi -ge 1 ] -then $cmdEXE std_outp.1iB > TTT.out.1iB 2>&1 +then + sleep $wait2run + $cmdEXE > TTT.out.1iB 2>&1 + mv STDOUT.0000 std_outp.1iB + cat TTT.out.1iB else $cmdEXE > std_outp.1iB fi mv STDERR.0000 std__err.1iB out=`egrep -c 'STOP ABNORMAL END' std_outp.1iB` if test $out != 0 then echo "==> RUN 1iB : ABNORMAL END => exit" ; exit 3 ; fi -if test -f $pref.ckptA.001.001.data -then echo "==> END RUN 1iB" -else echo "==> RUN 1iB STOP without writing $pref => exit" ; exit 3 ; fi +listF=`ls -1 $pref.ckptA*.data 2> /dev/null` +if test "x$listF" = x +then echo "==> RUN 1iB STOP without writing $pref => exit" ; exit 3 +else echo "==> END RUN 1iB" ; fi for xx in $listP do rnp_loc $xx.ckptA $xx.$num2c done -mv *.0??.0??.* $dir3 -txtF=`ls -1 *.txt 2> /dev/null` -mv R?.data R?.meta DR?.data DR?.meta $txtF $dir3 +mv *.data *.meta $dir3 +txtF=`ls -1 *.txt STD???.00?? 2> /dev/null` +if test "x$txtF" != x ; then mv $txtF $dir3 ; fi listS=`ls $dir3/pickup*.${num0c}* 2> /dev/null | head -1` if test "x$listS" != x ; then mv $dir3/pickup*.${num0c}* . ; fi rm $dir3/pickup*.$num1c.* @@ -370,21 +376,21 @@ chkmeta='Y' for yy in $listP do - listY=`(cd $dir1 ; ls $yy.$num2c.*.data | sed "s/$yy\.$num2c\.//" | sed "s/\.data//")` + listY=`(cd $dir1 ; ls $yy.$num2c*.data | sed "s/$yy\.$num2c//" | sed "s/data$//")` zz=$yy.$num2c echo '--> file='$zz', listY='$listY for xx in $listY do - echo ' diff' $dir1/$zz.$xx.data $dir3 - diff $dir1/$zz.$xx.data $dir3 + echo ' diff' $dir1/$zz${xx}data $dir3 + diff $dir1/$zz${xx}data $dir3 out=$? if test $out != 0 ; then echo 'Diff outp=' $out ' ==> stop' exit 4 fi - if test $chkmeta = 'Y' -a -f $dir1/$zz.$xx.meta ; then - echo ' diff' $dir1/$zz.$xx.meta $dir3 - diff $dir1/$zz.$xx.meta $dir3 + if test $chkmeta = 'Y' -a -f $dir1/$zz${xx}meta ; then + echo ' diff' $dir1/$zz${xx}meta $dir3 + diff $dir1/$zz${xx}meta $dir3 out=$? if test $out != 0 ; then echo 'Diff outp=' $out ' ==> stop' @@ -405,6 +411,7 @@ rm -rf $dir1 $dir2 $dir3 echo ' rm -f' std_????.?i? rm -f std_????.?i? + rm -f TTT.out.?i? 2> /dev/null echo ' rm -f' data.pkg data.tst rm -f data.pkg data.tst #- move back files from temp_tst dir: