--- MITgcm/verification/testreport 2009/01/29 21:45:43 1.120 +++ MITgcm/verification/testreport 2009/06/10 21:36:52 1.128 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.120 2009/01/29 21:45:43 utke Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.128 2009/06/10 21:36:52 jmc Exp $ # $Name: $ # @@ -11,7 +11,7 @@ echo echo "where possible OPTIONS are:" echo " (-help|-h) print usage" - echo " (-mth) run multi threaded (using eedata.mth)" + echo " (-mth) run multi-threaded (using eedata.mth)" echo " (-mpi) compile and run using MPI" echo " (-ieee|-noieee) if possible, use IEEE compiler flags" echo " (DEF=\"-ieee\")" @@ -273,9 +273,9 @@ 'aSIav') testoutput_var $1 "seaice_area_mean" "SIce Area mean" $2 $3; yy=$? ;; 'aSIsd') testoutput_var $1 "seaice_area_sd" "SIce Area StDv" $2 $3; yy=$? ;; 'hSImn') testoutput_var $1 "seaice_heff_min" "SIce Heff min" $2 $3; yy=$? ;; - 'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Hell max" $2 $3; yy=$? ;; - 'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Hell mean" $2 $3; yy=$? ;; - 'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Hell StDv" $2 $3; yy=$? ;; + 'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Heff max" $2 $3; yy=$? ;; + 'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Heff mean" $2 $3; yy=$? ;; + 'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Heff StDv" $2 $3; yy=$? ;; 'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;; 'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South" $2 $3; yy=$? ;; 'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North" $2 $3; yy=$? ;; @@ -320,10 +320,10 @@ elif test "x$OADM" = xt ; then command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'" else - command="$command --mods=../code" + command="$command -mods=../code" fi if test "x$OPTFILE" != xNONE ; then - command="$command --optfile=$OPTFILE" + command="$command -optfile=$OPTFILE" fi if test "x$IEEE" != x ; then command="$command -ieee" @@ -334,6 +334,10 @@ if test "x$MPI" = xt ; then command="$command -mpi" fi + if test "x$MULTI_THREAD" = xt ; then + #- run multi-threaded using OpenMP: + command="$command -omp" + fi if test "x$TS" = xt ; then command="$command -ts" fi @@ -381,8 +385,10 @@ cp make.log $CDIR"/make.log" return 1 fi + echo successful 1>&2 + else + echo '' fi - echo successful 1>&2 exit 0 ) fi @@ -521,6 +527,24 @@ if test -d $1 ; then ( cd $1 ; shift + inpMPI=`(cd ../$1 ; find . -name "*.mpi" -print | sed 's:^\./::')` + for xx in $inpMPI ; do + if test -r "../"$1"/"$xx ; then + # found 1 _mpi sfx file in 1rst input dir and it is readable + yy=`echo $xx | sed 's:\.mpi$::'` + if test "x$MPI" = "xt" ; then + # mpi test: remove symbolic link & link _mpi sfx file + if test -h $yy ; then rm -f $yy ; fi + if test ! -r $yy ; then + ln -sf "../"$1"/"$xx $yy ; + printf "$xx " 1>&2 + fi + else + # not mpi test: remove symbolic link + if test -h $yy ; then rm -f $yy ; fi + fi + fi + done if test -r "../"$1"/eedata.mth" ; then # found eedata.mth in 1rst input dir and it is readable if test "x$MULTI_THREAD" = "xt" ; then @@ -718,6 +742,35 @@ } +check_eedata() +{ + # check_eedata size.h eedata + if [ $# -eq 2 ] ; then + if test -f $1 -a -f $2 ; then + sx=`grep "^ & *nSx *=" $1 | sed "s/^ & *nSx *=//" | sed 's/, *$//'` + nx=`grep "^ *nTx *=" $2 | tail -1 | sed 's/^ *nTx *= *//' | sed "s/, *$//"` + if test "x$nx" = x ; then + rx=10 + else + rx=`expr $sx % $nx` + fi + sy=`grep "^ & *nSy *=" $1 | sed "s/^ & *nSy *=//" | sed 's/, *$//'` + ny=`grep "^ *nTy *=" $2 | tail -1 | sed 's/^ *nTy *= *//' | sed "s/, *$//"` + if test "x$ny" = x ; then + ry=20 + else + ry=`expr $sy % $ny` + fi + echo `expr $rx + $ry` + else + echo '-1' + fi + else + echo '-2' + fi + +} + ############################################################################### @@ -1014,6 +1067,9 @@ BASE="tr_"$MACH"_"$DATE"_" if test "x$OUTDIR" != x ; then BASE="tr_"$OUTDIR"_"$DATE"_" +else + short_name=`hostname | sed 's/\..*$//'` + BASE="tr_"$short_name"_"$DATE"_" fi DNUM=0 DRESULTS="$BASE$DNUM" @@ -1114,18 +1170,19 @@ # Cleanup only! if test "x$CLEANUP" = xt ; then - if test -r $BUILD_DIR/Makefile ; then - echo ' ------ clean dir:' $dir/$builddir - ( cd $BUILD_DIR ; make CLEAN ) - fi + echo -n ' --- dir:' $BUILD_DIR ': ' + makeclean $BUILD_DIR + rm -f $BUILD_DIR/$EXECUTABLE if test -d $dir/$rundir/CVS ; then - echo ' ------ clean dir:' $dir/$rundir + echo -n ' --- dir:' $dir/$rundir ': ' run_clean $dir/$rundir fi - ( - cd $dir - rm -rf tr_run.* - ) + trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')` + ttd=`echo $trdir | wc -w` + if test $ttd != 0 ; then + echo ' --- rm dir:' $trdir + ( cd $dir ; rm -rf $trdir ) + fi continue fi @@ -1147,6 +1204,13 @@ echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir" continue fi + if test "x$MPI" = "xt" -a "x$MULTI_THREAD" = "xt" ; then + retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/input/eedata.mth"` + if test $retv != 0 ; then + echo "input/eedata.mth tiling misfit -- skipping $dir" + continue + fi + fi # Check whether there are "extra runs" for this testdir extra_runs= @@ -1157,14 +1221,23 @@ refExOut=`echo $ref_outp | sed "s/\./.${name}./"` outf="$dir/results/$refExOut" if test -f $outf -a -r $outf ; then - if test "x$MULTI_THREAD" = "xt" ; then - if test -r $dir"/"$exd"/eedata.mth" ; then + if test "x$MULTI_THREAD" = "xt" ; then + if test -r $dir"/"$exd"/eedata.mth" ; then + if test "x$MPI" = "xt" ; then + retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/"$exd"/eedata.mth"` + if test $retv = 0 ; then extra_runs="$extra_runs $name" - #else echo $dir"/"$exd"/eedata.mth: not found" + else + echo $exd"/eedata.mth tiling misfit -- skipping $dir" fi - else + else extra_runs="$extra_runs $name" + fi + #else echo $dir"/"$exd"/eedata.mth: not found" fi + else + extra_runs="$extra_runs $name" + fi fi done