--- mitgcm.org/front_content/make_summary 2003/12/06 20:06:58 1.1 +++ mitgcm.org/front_content/make_summary 2009/07/25 00:52:12 1.56 @@ -1,6 +1,6 @@ #! /usr/bin/env bash -# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.1 2003/12/06 20:06:58 edhill Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.56 2009/07/25 00:52:12 jmc Exp $ # # The purpose of this script is to create HTML summaries of the # directories produced by the "parse_emails" script. @@ -19,22 +19,23 @@ exit 1 } +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 fi - + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - + case $ac_option in -help | --help | -h | --h) @@ -44,106 +45,28 @@ 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 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" +OUTFILE=$OUTDIR"/output_"$PERIOD".html" +res_url="http://mitgcm.org/testing/" -# Create the "latest" links +# Create the links in $OUTFILE : echo "Creating the \"latest\" file for each machine: " -LATEST=$OUTDIR"/latest_"$PERIOD".html" -cat > $LATEST << EOF +the_date=`date` +cat > $OUTFILE << EOF @@ -155,50 +78,115 @@ - - + + -

The following are the most recent MITgcm testing runs for the - time period $PERIOD.

- The machine naming scheme is:

- - +

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 "Nickname"
+ - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + - - + + + + + + + + + + + + + + + + + +
Machine Type Nickname Notes
faulks.lcs.mit.edu "faulks"Red Hat 7.3 on an Intel P4 (the "original" testing machine)
shelley.lcs.mit.edu "shelley"Red Hat 9 on an Intel P4
Intel P4 "faulks" Fedora Core 6
Intel P4 "meander" Ubuntu 8.10
Intel P4 "lagoon" Fedora 8
Intel Celeron (P4) "mdvia32" Mandriva 2009.1
Intel Celeron (P4) "jauntyia32" Ubuntu 9.04
Opteron Barcelona "harbor" Ubuntu 8.04 LTS (x86_64)
Intel Xeon (Woodcrest) "dickens" Fedora 10 (x86_64)
Intel Core 2 duo "danton" Fedora 11 (x86_64)
ACESgrid Dell Xeon "aces"Fedora Core 2
Intel Xeon (Woodcrest) cluster + "beagle"Rocks 5.2 (x86_64)
cg01.lcs.mit.edu cluster "myrinet"MITgcm cluster facility -
Alpha cluster "halem" + -
SGI Altix "orion"JPL Supercomputing and - Visualization Facility
IBM POWER3 SP "bf"NCAR Blackforest +
SGI Altix Cluster "columbia" + NAS Columbia
IBM POWER4 SP "edvir" AIX 5.2
IBM POWER5+ SP "blueice"NCAR Blueice
IBM POWER4 SP "bs"NCAR Bluesky -
AMD Opteron "starp" SuSE SLES 10 (AMD64)
AMD Opteron "solasrv" Solaris 10
Sun UltraSparc IV "rays" Solaris 10
NEC SX-8 "sx8" Super-UX
Cray XD1 (AMD Opteron) "xd1"Cray HPC enhanced Linux 2.6.5
PowerPC970MP cluster "bigred"SuSE SLES 9 (PPC)
-
+ +


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

- + - + + + + EOF color="#bbffdd" -res_url="http://mitgcm.org/testing/" +ncolor="#bbddff" -MACHINES="faulks shelley myrinet halem hopper lomax orion bf bs" - -( cd $INDIR ; ls -1 ) > ./dir_all +MACHINES="faulks meander lagoon harbor dickens danton aces" +MACHINES="$MACHINES beagle columbia edvir rays solssrv solasrv sx8 xd1" +MACHINES="$MACHINES bigred starp" + +( cd $INDIR ; ls -1 -t */summary.txt | sed 's/\/summary.txt//' ) > ./dir_all + +MALL=`cat ./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="faulks" for mname in $MACHINES ; do echo " $mname" - if test "x$color" = x#bbffdd ; then - color="#bbddff" - else - color="#bbffdd" - fi dir_list=`grep $mname ./dir_all` echo -n "" > ./mlist @@ -245,18 +251,55 @@ OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x -a -r "$dir/genmake_state" ; then - comm=`grep 'OPTFILE=' $dir/genmake_state` + comm=`grep 'OPTFILE=' $dir/genmake_state 2>/dev/null` eval $comm OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x ; then - comm=`grep '^# OPTFILE=' $dir/*/Makefile 2>/dev/null | head -1 | sed -e 's|^# ||'` + comm=`grep '^# OPTFILE=' $dir/*/Makefile* 2>/dev/null | head -1` + comm=${comm##*#} eval $comm OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x ; then OPTFILE="not_explicitly_specified" fi + + ADJOINT= + RESTART=0 + NOI3E=0 + MTH=0 + if test -r $dir/summary.txt ; then + comm=`grep 'ADJOINT=true' $dir/summary.txt 2>/dev/null` + eval $comm + RESTART=`grep -c 'test 2+2=4 summary' $dir/summary.txt` + NOI3E=`grep -c "^run: .*testreport.* '*-noieee'*" $dir/summary.txt` + MTH=`grep -c "^run: .*testreport.* -mth " $dir/summary.txt` + fi + if test "x$RESTART" = x0 ; then + kind="forward" + test "x$ADJOINT" = xtrue && kind="adjoint" + else + kind="restart" + 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$NOI3E" = x1 ; then + OPTFILE="${OPTFILE}.noieee" + 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 + t_tot=`cat ./all_tests | wc -l | sed -e 's| ||g'` + t_pass=`grep '^Y Y Y Y' ./all_tests | grep 'pass ' | wc -l | sed -e 's| ||g'` + fi + rm -f ./all_tests + # echo "${dir##*/} : $t_pass out of $t_tot" + tokens=`echo $i | sed -e 's|_| |g'` echo "" > ./ms_tmp for tok in $tokens ; do @@ -264,7 +307,8 @@ done DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,3)=="200")'` rm -f ./ms_tmp - echo "$OPTFILE $DAY $i" >> ./mlist + + echo "$OPTFILE$kind $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> ./mlist done @@ -274,16 +318,30 @@ # Do we have any data? If so, create the latest pointer. num=`wc -l ./mlist | awk '{print $1}'` if test $num -gt 0 ; then - optfiles=`cat ./mlist | cut -d " " -f 1 | sort | uniq` - for optf in $optfiles ; do - ldir=`grep "^$optf " ./mlist | sort -r | head -1 | cut -d " " -f 3` + # swap colors + ctmp=$color + color=$ncolor + ncolor=$ctmp + + keys=`cat ./mlist | cut -d " " -f 1 | sort | uniq` + + for key in $keys ; do + tline=`grep "^$key " ./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 + cat <>$OUTFILE - + - + + + + EOF done @@ -291,9 +349,18 @@ done -cat >> $LATEST << EOF +cat >> $OUTFILE << EOF + + +
"Nickname" Nickname OPTFILE Name Date (YYYYMMDD) Type Date Summary Ratio
$mname $mname $optf $DAY $kind $DAY summary.txt $ratio
This table generated on: $the_date
+ +

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

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