--- mitgcm.org/front_content/make_summary 2004/07/08 21:32:07 1.18 +++ mitgcm.org/front_content/make_summary 2013/08/22 21:32:54 1.78 @@ -1,6 +1,6 @@ #! /usr/bin/env bash -# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.18 2004/07/08 21:32:07 edhill Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.78 2013/08/22 21:32:54 jmc Exp $ # # The purpose of this script is to create HTML summaries of the # directories produced by the "parse_emails" script. @@ -10,232 +10,78 @@ { echo echo "Usage: $0 [OPTIONS]" - echo + echo echo "where possible OPTIONS are:" echo " (-help|-h) print usage" echo " (-date |-d )PERIOD run for PERIOD=\"YYYY_MM\"" echo " [def=\"$PERIOD\"]" - echo + echo exit 1 } -old_summary() -{ - # Create the old-style summary file for $PERIOD - echo -n "Creating the summary file for the period \"$PERIOD\" ... " - cat > $OUTFILE << EOF - - - - - MITgcm testing summary - - - - - - -EOF - - # all_files=`find $INDIR -name summary.txt` - all_files=`( cd $INDIR ; find . -name summary.txt )` - - for f in $all_files ; do - - file=$INDIR"/"${f/.\//} - grep "^fresults" $file > /dev/null 2>&1 - RETVAL=$? - if test "x$RETVAL" != x0 ; then - continue - fi - - url=`echo $file | sed -e 's|/u/edhill/www|http://mitgcm.org/~edhill|'` - url=`echo $url | sed -e 's|summary.txt||'` - MACH= - fresults= - color="#eeeeee" - - source $file - echo $fresults | grep FAIL > /dev/null 2>&1 - if test "x$?" = x0 ; then - color="#ff99ff" - fi - echo $fresults | grep pass > /dev/null 2>&1 - if test "x$?" = x0 ; then - color="#99ffff" - fi - - gm_state=`echo $file | sed -e 's/summary.txt/genmake_state/g'` - if test -r $gm_state ; then - grep '^OPTFILE=' $gm_state > ./tmp_state - source ./tmp_state - else - optfile="unknown" - fi - optfile=`echo $OPTFILE | awk -F '/' '{print $NF}'` - - echo "" >> $OUTFILE - echo "" >> $OUTFILE - echo "" >> $OUTFILE - for i in $fresults ; do - if test "x$i" = xN ; then - echo -n "" >> $OUTFILE - else - echo -n "" >> $OUTFILE - fi - done - echo "" >> $OUTFILE - echo "" >> $OUTFILE - - done - - cat >> $OUTFILE << EOF - -
$MACH$DATE$i$i$optfile
- - -EOF - - chmod a+r $OUTFILE - echo "done" -} - - +export LC_ALL="en_US.UTF-8" +CURR_PER=`date +%Y`"_"`date +%m` # defaults -PERIOD=`date +%Y`"_"`date +%m` +PERIOD=$CURR_PER # Parse options ac_prev= for ac_option ; do - + # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue + eval "$ac_prev=\$ac_option" + ac_prev= + continue fi - + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - + case $ac_option in - + -help | --help | -h | --h) usage ;; - - -date | --date | -d | --d) - ac_prev=PERIOD ;; - --date=* | -date=*) - PERIOD=$ac_optarg ;; - - *) + + -date | --date | -d | --d) + ac_prev=PERIOD ;; + --date=* | -date=*) + PERIOD=$ac_optarg ;; + + *) echo "Error: don't understand argument \"$ac_option\"" usage - ;; - + ;; + esac - + done +#INDIR="/net/orwell/export/export-9/mitgcm-testing/results/$PERIOD" +#OUTDIR="/home/jmc/mitgcm/test_web/summary" INDIR="/u/u0/httpd/html/testing/results/$PERIOD" OUTDIR="/u/u0/httpd/html/testing/summary" -OUTFILE=$OUTDIR"/summary_"$PERIOD".html" -# Create the "latest" links +OUTFILE=$OUTDIR"/output_"$PERIOD".html" +res_url="http://mitgcm.org/testing/" + +#TMP=./mksum_$$ +#- try to put temporary files in system-local /tmp dir +TMP=/tmp/mksum_$$ +touch $TMP ; retVal=$? +if [ $retVal -eq 0 ] ; then + if test ! -r $TMP ; then TMP=./mksum_$$ ; fi +else + TMP=./mksum_$$ +fi +rm -f $TMP +# echo "temp files: $TMP" + +# Create the links in $OUTFILE : echo "Creating the \"latest\" file for each machine: " -LATEST=$OUTDIR"/latest_"$PERIOD".html" the_date=`date` -cat > $LATEST << EOF - - - - - MITgcm testing summary - - - - - - - - - - - - - -

The MITgcm model is tested - (compiled and run) in an automated fashion on a varirety of - different machines. The following is a summary of the MITgcm - verification suite for the time period: $PERIOD.

- -

The machine naming scheme is:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Machine Type NicknameNotes
Intel P4 "faulks"Fedora Core 1 [formerly Red Hat 7.3]
Intel P4 "hemmingway"Fedora Core 1 (gcc 3.3.2)
Intel P3/P4 Beowulf "myrinet"MITgcm cluster - facility
Alpha cluster "halem" - NASA NCCS Halem
SGI Origin 2000 "hopper" - NAS SGI Origin 2000
SGI Origin 3000 "lomax" - NAS SGI Origin 3000
SGI Altix 350 "altix350"MIT ACESgrid - GeoCluster
IBM POWER3 SP "bf"NCAR Blackforest -
IBM POWER4 SP "bs"NCAR Bluesky -
AMD Opteron "adams"RHEL v3 (AMD64)
Sun UltraSparc "slough"Solaris 8
Intel P4 Mosix Cluster "sea"Red Hat v7.2
AMD Athlon XP 2500+ "eddy"Fedora Core 2 (Red Hat gcc 3.3.3)
AMD Opteron cluster "dolphin"SuSE SLES v8.1
-


- The complete output for the verification runs can be found in - the summary pages - and the testing archives. - The latest reports are:

+sed "s/_PERIOD/$PERIOD/" summary_head > $OUTFILE +cat <>$OUTFILE @@ -250,19 +96,31 @@ color="#bbffdd" ncolor="#bbddff" -res_url="http://mitgcm.org/testing/" -MACHINES="faulks shelley myrinet eaps halem hopper lomax orion bf bs slough sea" -MACHINES="$MACHINES eddy adams dolphin hemmingway altix350" +MACHINES="aces- acesgrid baudelaire dickens danton beagle" +MACHINES="$MACHINES pleiades iblade sx8 uv100 solasrv stomp weber" -( cd $INDIR ; ls -1 -t ) > ./dir_all +( cd $INDIR ; ls -1 -t */summary.txt | sed 's/\/summary.txt//' ) > $TMP.dir_all + +MALL=`cat $TMP.dir_all | sed -e 's|_| |g' | awk '{print $2}' | sort | uniq` +for madd in $MALL ; do + present=0 + for m in $MACHINES ; do + echo $madd | grep $m > /dev/null 2>&1 + RETVAL=$? + test $RETVAL = 0 && present=1 + continue + done + test $present = 0 && MACHINES="$MACHINES $madd" +done +#MACHINES="baudelaire" for mname in $MACHINES ; do echo " $mname" - dir_list=`grep $mname ./dir_all` - echo -n "" > ./mlist + dir_list=`grep $mname $TMP.dir_all` + echo -n "" > $TMP.mlist for i in $dir_list ; do @@ -279,7 +137,7 @@ OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x ; then - comm=`grep '^# OPTFILE=' $dir/*/Makefile 2>/dev/null | head -1` + comm=`grep '^# OPTFILE=' $dir/*/Makefile* 2>/dev/null | head -1` comm=${comm##*#} eval $comm OPTFILE=${OPTFILE##*/} @@ -288,41 +146,100 @@ OPTFILE="not_explicitly_specified" fi - ADJOINT= + # EXTRA = non-standard list of experiment + ADJOINT=0 + TANGLIN=0 + OPENAD=0 + RESTART=0 + EXTRA= + FAST=0 + DVLP=0 + MPI=0 + MTH=0 + UR4=0 if test -r $dir/summary.txt ; then - comm=`grep 'ADJOINT=true' $dir/summary.txt 2>/dev/null` - eval $comm + ADJOINT=`grep -c -i '^ADJOINT' $dir/summary.txt` + if test "x$ADJOINT" = x1 ; then + OPENAD=`grep -c '^Adjoint .* OpenAD' $dir/summary.txt` + fi + TANGLIN=`grep -c -i '^TANGLIN' $dir/summary.txt` + if test "x$TANGLIN" = x1 ; then + OPENAD=`grep -c '^TangLin .* OpenAD' $dir/summary.txt` + fi + RESTART=`grep -c 'test 2+2=4 summary' $dir/summary.txt` + comm=`grep '^run: .*testreport.* ' $dir/summary.txt` + EXTRA=`echo "$comm" | grep " -*-tdir\>" | sed -e "s/^.* -*-tdir\>//" -e "s/ -.*$//"` + if test "x$EXTRA" = x ; then + EXTRA=`echo "$comm" | grep " -*-t\>" | sed -e "s/^.*-*-t\>//" -e "s/ -.*$//"` + fi + if test "x$EXTRA" = x ; then EXTRA=0 ; else + #echo -n "EXTRA=$EXTRA" + nn0=`echo $EXTRA | sed "s/ *' *//g" | wc -w` + nn1=`echo $EXTRA | sed "s/ *' *//g" | tr ' ' '\n' | grep -c "\"` + if test "x$FAST" = x0 ; then + FAST=`echo "$comm" | grep -c " '*-noieee'*"` + fi + DVLP=`echo "$comm" | grep -c " -*-devel\>"` + MPI=`echo "$comm" | grep -c " -*-mpi\>"` + if test "x$MPI" = x0 ; then + MPI=`echo "$comm" | grep -c " -*-MPI\>"` + fi + MTH=`echo "$comm" | grep -c " -*-mth\>"` + UR4=`echo "$comm" | grep -c " -*-use_r4\>"` + if test "x$UR4" = x0 ; then + UR4=`echo "$comm" | grep -c " -*-ur4\>"` + fi fi - if test "x$ADJOINT" = x ; then - kind="forward" + if test "x$ADJOINT" = x1 ; then + kind="adjoint-taf" ; order=0 + if test "x$OPENAD" = x1 ; then + kind="adjoint-oad" ; order=2 + fi + elif test "x$TANGLIN" = x1 ; then + kind="tanglin-taf" ; order=1 + if test "x$OPENAD" = x1 ; then + kind="tanglin-oad" ; order=3 + fi + elif test "x$RESTART" = x0 ; then + kind="forward" ; order=4 else - test "x$ADJOINT" = xtrue && kind="adjoint" + kind="restart" ; order=5 + fi + order=`expr $order + 10 \* $EXTRA` + order=`printf '%3.3i' $order` + if test "x$UR4" = x1 ; then + OPTFILE="${OPTFILE}.use_r4" + fi + if test "x$MPI" = x1 ; then + yy=`echo $OPTFILE | grep -c '+mpi'` + if test $yy = 0 ; then OPTFILE="${OPTFILE}+mpi" ; fi + fi + if test "x$MTH" = x1 ; then + yy=`echo $OPTFILE | grep -c '+mth$'` + if test $yy = 0 ; then OPTFILE="${OPTFILE}+mth" ; fi + fi + if test "x$FAST" = x1 ; then + OPTFILE="${OPTFILE}.fast" + fi + if test "x$DVLP" = x1 ; then + OPTFILE="${OPTFILE}.dvlp" fi t_pass="--" t_tot="--" if test -r $dir/summary.txt ; then - grep '^[YN] [YN] [YN] [YN] ' $dir/summary.txt > ./all_tests 2>/dev/null + grep '^[YN] [YN] [YN] [YN]' $dir/summary.txt > ./all_tests 2>/dev/null t_tot=`cat ./all_tests | wc -l | sed -e 's| ||g'` - grep '^Y Y Y Y ' ./all_tests > ./all_ran 2>/dev/null - grep advect_ ./all_ran 2>/dev/null > ./all_ran_advect - t_advect=`cat ./all_ran_advect | wc -l | sed -e 's| ||g'` - digits=`cat ./all_ran_advect | awk '{print $9}'` - t_advect_pass=0 - for k in $digits ; do - test "x$k" = x-- && k=0 - test $k -ge 9 && t_advect_pass=$(( $t_advect_pass + 1 )) - done - grep -v advect ./all_ran 2>/dev/null > ./all_ran_noadvect - digits=`cat ./all_ran_noadvect | awk '{print $5}'` - t_sum=0 - for k in $digits ; do - test "x$k" = x-- && k=0 - test $k -ge 9 && t_sum=$(( $t_sum + 1 )) - done - t_pass=$(( $t_sum + $t_advect_pass )) + t_pass=`grep '^Y Y Y Y' ./all_tests | grep 'pass ' | wc -l | sed -e 's| ||g'` fi - rm -f ./all_tests ./all_ran ./all_ran_advect ./all_ran_noadvect + rm -f ./all_tests # echo "${dir##*/} : $t_pass out of $t_tot" tokens=`echo $i | sed -e 's|_| |g'` @@ -330,38 +247,43 @@ for tok in $tokens ; do echo $tok >> ./ms_tmp done - DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,3)=="200")'` + DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,2)=="20")'` rm -f ./ms_tmp - echo "$OPTFILE$kind $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> ./mlist + echo "$OPTFILE$order $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> $TMP.mlist done # helpful for debugging - # cat ./mlist + # cat $TMP.mlist # Do we have any data? If so, create the latest pointer. - num=`wc -l ./mlist | awk '{print $1}'` + num=`wc -l $TMP.mlist | awk '{print $1}'` if test $num -gt 0 ; then # swap colors - ctmp=$color - color=$ncolor - ncolor=$ctmp + ctmp=$color + color=$ncolor + ncolor=$ctmp - keys=`cat ./mlist | cut -d " " -f 1 | sort | uniq` + keys=`cat $TMP.mlist | cut -d " " -f 1 | sort | uniq` for key in $keys ; do - tline=`grep "^$key " ./mlist | head -1` + tline=`grep "^$key " $TMP.mlist | head -1` ratio=`echo $tline | cut -d " " -f 6` ldir=`echo $tline | cut -d " " -f 5` kind=`echo $tline | cut -d " " -f 4` optf=`echo $tline | cut -d " " -f 3` DAY=`echo $tline | cut -d " " -f 2` URL="results/$PERIOD/$ldir" - cat <>$LATEST + #-- machine name to print: + sname=`echo $mname | sed 's/-$//'` + alt=`echo $key | sed "s/$optf//"` + #if [ $alt -ge 30 ] ; then sname="${sname}.darwin" + #elif [ $alt -ge 20 ] ; then sname="${sname}.monod" ; fi + cat <>$OUTFILE - + @@ -374,17 +296,16 @@ done -cat >> $LATEST << EOF +cat >> $OUTFILE << EOF
Nickname
$mname $sname $optf $kind $DAY
This table generated on: $the_date
-

Examples of the scripts used for these testing runs can be obtained -from -the "contrib" area of the MITgcm CVS archive.

+

Examples of the scripts used for these testing runs can be obtained from: +MITgcm/tools/example_scripts.

@@ -392,9 +313,14 @@ EOF -rm -f ./dir_all ./mlist +rm -f $TMP.dir_all $TMP.mlist + +#- put the file in place +chgrp gcmpack $OUTFILE +chmod 664 $OUTFILE +LATEST=$OUTDIR"/latest_"$PERIOD".html" +mv -f $OUTFILE $LATEST -CURR_PER=`date +%Y`"_"`date +%m` if test "x$PERIOD" = "x$CURR_PER" ; then cp $LATEST ./testing.xml (