#!/bin/sh
#FILENAME: papiani-new-gbis-change.query 02/JUN/95
########## SET UP VARIABLES ###############################
WWW_ROOT=/netlib/parkbench/gbis
HTTP_WWW_ROOT=http://www.netlib.org/parkbench/gbis
GENESIS_DIRS=/pcsg/ftp/pub/benchmark_results/
PLOT_ROOT=/pcsg/ftp/pub/benchmark_results
FTP=ftp://cs.utk.edu/pub/benchmark_results
TAIL=/usr/ucb/tail
CGI=/usr/local/netlib/bin/cgi-bin/gbis
HTTP_CGI=http://www.netlib.org/cgi-bin/gbis
PSTOGIF=$WWW_ROOT/bin/pstogif
PSTOXBM=$WWW_ROOT/bin/pstoxbm
GNUPLOT=/local/gnu/bin/gnuplot
LD_LIBRARY_PATH=/usr/local/X11R5/lib ; export LD_LIBRARY_PATH
######## The following paths are set relative to those above
HOME=$WWW_ROOT ; export HOME
TEMP=$WWW_ROOT/tmp
HTTP_TEMP=$HTTP_WWW_ROOT/tmp
ICONS=$HTTP_WWW_ROOT/gif_icons
GBIS_TOP=$HTTP_WWW_ROOT/html
##########END VARIABLES ####################################
PIDFILE=$$
ERRORFILE=$TEMP/$PIDFILE.err
chmod ugo+rw $ERRORFILE
exec 2>$ERRORFILE
OUTFILE_PS=$TEMP/$PIDFILE.ps # temp PS output file.
OUTFILE_GIF=$TEMP/$PIDFILE.gif # GIF file.
OUTFILE_XBM=$TEMP/$PIDFILE.xbm # xbm file.
#
# Separate name for GIF and PS file when addressing through httpd:
#
WWW_FILE_GIF=$HTTP_TEMP/$PIDFILE.gif
WWW_FILE_PS=$HTTP_TEMP/$PIDFILE.ps
WWW_FILE_XBM=$HTTP_TEMP/$PIDFILE.xbm
#
# Set path to just /bin to reduce likelyhood of hacking.
#
PATH='/bin'
echo "Content-type: text/html"
echo
#
# o sed removes any ' that would upset quoted assignment
#
# o awk ensures that
# - all variables passed have legal names
# - special characters are not interpreted by sh
#
eval `echo $PREFIX$QUERY_STRING | sed -e 's/'"'"'/%27/g' | sed -e s/'+'/'_'/ | \
awk 'BEGIN{RS="&";FS="="} $1~/^[a-zA-Z][a-zA-Z0-9_]*$/ \
{printf "if [ $QS_%s ]; then QS_%s=$QS_%s%c, %s%c; else QS_%s=%c%s%c; fi; \n", \
$1,$1,$1,39,$2,39,$1,39,$2,39}' `
PS_COLOUR=monochrome
FORMAT=`echo $QS_FORMAT|awk '/GIF/{print "GIF"}'`
if [ $FORMAT ]
then
PID=`echo $QS_FORMAT|sed "s/GIF//"`
else
FORMAT=`echo $QS_FORMAT|awk '/XBM/{print "XBM"}'`
if [ $FORMAT ]
then
PID=`echo $QS_FORMAT|sed "s/XBM//"`
else
FORMAT=`echo $QS_FORMAT|awk '/PS/{print "PS"}'`
if [ $FORMAT ]
then
PID=`echo $QS_FORMAT|sed "s/PS//"`
PS_COLOUR=$QS_PSCOLOUR
else
PID=`echo $QS_FORMAT|sed "s/TEXT//"`
FORMAT='TEXT'
fi
fi
fi
#echo PIDFILE=$PIDFILE
#echo XTYPE=$XTYPE
#echo QS_FORMAT=$QS_FORMAT
PLOTLIST=$TEMP/$PIDFILE.tmp
PLOTLIST1=$TEMP/$PID.files
GNUFILE=$TEMP/$PIDFILE.gnu
touch $GNUFILE
chmod ugo=rw $GNUFILE
BENCHMARK=`$TAIL -1 $PLOTLIST1|cut -f1 -d\/`
if [ $BENCHMARK = 'RINF1' ]
then
FILENAME=`$TAIL -1 $PLOTLIST1|cut -f3 -d\/`
KERNEL=`echo $FILENAME|cut -f3 -d_`
KERNEL='('$KERNEL')'
fi
BENCHMARK=`echo $BENCHMARK|sed -e 's/EP/EMBARRASSINGLY PARALLEL/'|sed 's/DMM/DENSE MATRIX MULTIPLY/'|sed 's/LU/DENSE LU FACTORISATION/'|sed 's/CG/CONJUGATE GRADIENT/'|sed 's/LIS/LARGE INTEGER SORT/'|sed 's/1DFFT/1-D FFT/'|sed 's/3DFFT/3-D FFT/'|sed 's/QR/QR DECOMPOSITION/'|sed 's/DENSE LU FACTORISATION_CFD/LU SIMULATED CFD APPLICATION/'|sed 's/SP_CFD/SP SIMULATED CFD APPLICATION/'|sed 's/BT_CFD/BT SIMULATED CFD APPLICATION/'`
cat << HTML
Southampton HPC Centre - GBIS - $BENCHMARK
$BENCHMARK
HTML
if [ $FORMAT = 'GIF' -o $FORMAT = 'XBM' -o $FORMAT = 'PS' ];then
#
# Run gnuplot:
# Use >! redirection to wipe old file if it exists.
# Use << to read input from script.
#
#touch $OUTFILE_PS
# chmod 666 $OUTFILE_PS
if [ $QS_XTYPE = 'LOG' ];then
QS_XTYPE="logscale"
else
QS_XTYPE="nologscale"
fi
if [ $QS_YTYPE = 'LOG' ];then
QS_YTYPE="logscale"
else
QS_YTYPE="nologscale"
fi
#
AXES=`$TAIL -1 $PLOTLIST1|awk '/_TIME/{print "TIME"}'`
if [ $AXES ]
then
XLABEL='"Message Length / Byte"'
YLABEL='"Transfer Time / s"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_RATE/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Message Length / Byte"'
YLABEL='"Transfer Rate / (MB/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_BARTIME/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Time Per Barrier / us"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_BARRATE/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Barrier Rate / (Mbarr/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_AVE/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Average Transfer Rate / (MByte/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/SEQ_READ/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Transfer Rate (Sequential Read) / (MByte/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/RAN_READ/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Transfer Rate (Random Read) / (MByte/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_WRITE/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Transfer Rate (Write) / (MByte/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_BENCH/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Benchmark Performance / (Mflop/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_TEMPO/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Temporal Performance / (Timestep/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_SIMUL/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Simulation Performance / (sim-ps/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_SPEED/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Speedup"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_EFFIC/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Efficiency / %"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_TRANS/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Number of Processors"'
YLABEL='"Performance / (kw_64/s)"'
else
AXES=`$TAIL -1 $PLOTLIST1|awk '/_POLY/{print "RATE"}'`
if [ $AXES ]
then
XLABEL='"Computational Intensity / (flop/mref)"'
YLABEL='"RINF / (Mflop/s)"'
else
XLABEL='"Number of processors"'
YLABEL='"Performance / (Mflop/s)"'
fi #poly
fi #trans
fi #effic
fi #speed
fi #simul
fi #tempo
fi #bench
fi #write
fi #seq read
fi #ran read
fi #ave
fi #barrate
fi #bartime
fi #rate
fi #time
QS_XMIN=`echo $QS_XMIN|sed "s/%2B/+/"`
QS_XMAX=`echo $QS_XMAX|sed "s/%2B/+/"`
QS_YMIN=`echo $QS_YMIN|sed "s/%2B/+/"`
QS_YMAX=`echo $QS_YMAX|sed "s/%2B/+/"`
echo "set terminal postscript portrait $PS_COLOUR '"Helvetica"' 10" >$GNUFILE
echo "set size 0.65,0.9" >>$GNUFILE
echo set title '"'$BENCHMARK $KERNEL'"' 0,0 >>$GNUFILE
echo set xlabel $XLABEL 0,0 >>$GNUFILE
echo set ylabel $YLABEL 0,0 >>$GNUFILE
echo "set $QS_XTYPE x" >> $GNUFILE
echo "set $QS_YTYPE y" >>$GNUFILE
echo "set xrange [$QS_XMIN:$QS_XMAX]" >> $GNUFILE
echo "set yrange [$QS_YMIN:$QS_YMAX]" >> $GNUFILE
if [ $QS_XKEY ]
then
if [ $QS_YKEY ]
then
QS_XKEY=`echo $QS_XKEY|sed "s/%2B/+/"`
QS_YKEY=`echo $QS_YKEY|sed "s/%2B/+/"`
echo "set key $QS_XKEY,$QS_YKEY" >> $GNUFILE
COUNT=11
fi
else
COUNT=10
fi
echo 'plot \' >> $GNUFILE
cd $PLOT_ROOT
for NAMES in `cat $PLOTLIST1`
do
COUNT=`expr $COUNT + 1`
# TITLE=`echo $NAMES|cut -f3 -d\/`
# TITLE=`cat $NAMES|awk '/##machine/{print $0}'|sed "s/##machine://"`
# TITLE=`echo $NAMES|cut -f3 -d\/|cut -f1,2 -d_|sed 's/_/ /'`
TITLE=`echo $NAMES|cut -f3 -d\/|sed 's/_/ /g'|sed 's/RATE//'|sed 's/TIME//'|sed 's/KERNEL[0-9][0-9]*//'|sed 's/CONST//'|sed 's/BAR//'|sed 's/WRITE//'|sed 's/SEQ READ//'|sed 's/RAN READ//'|sed 's/AVE//'|sed 's/TEMPO//'|sed 's/SIMUL//'|sed 's/BENCH//'|sed 's/SPEED//'|sed 's/EFFIC//'|sed 's/PERF//'|sed 's/LONG//'|sed 's/SHORT//'|sed 's/TRANS//'|sed 's/POLY//'`
echo '"'$NAMES'"' title "'"$TITLE"'" with linespoints,'\' >> $GNUFILE
done
sed -e ${COUNT}'s/,\\//' $GNUFILE >$PLOTLIST
rm $GNUFILE
$GNUPLOT $PLOTLIST > $OUTFILE_PS 2>$ERRORFILE
rm $PLOTLIST
fi
if [ -s $ERRORFILE ];then
WARNING_ONLY=`cat $ERRORFILE|awk '/Warning/{print "yes"}'`
if [ ! "$WARNING_ONLY" ];then
cat << HTML
GBIS ERROR
An error occurred when gnuplot tried to interpret your request
the error message was:-
`cat $ERRORFILE`
to GBIS Home Page
University of Southampton
High Performance Computing Centre
Submitted by Mark Papiani,
last updated 24 February 1995.
HTML
rm $PLOTFILE_PS
rm $ERRORFILE
exit
fi
fi
if [ $FORMAT = 'GIF' ];then
#pstogif needs to be run from directory containing files to
#be converted:-
cd $TEMP
#redirection to $ERRORFILE below is to remove messages
#which pstogif generates during normal operation,
#if these are not redirected they get displayed on WWW results page
$PSTOGIF $OUTFILE_PS $OUTFILE_GIF >$ERRORFILE
rm $OUTFILE_PS
chmod ugo+wr $OUTFILE_GIF
#
# OUTPUT
#
cat << HTML
HTML
fi
if [ $FORMAT = 'XBM' ];then
cd $TEMP
$PSTOXBM $OUTFILE_PS $OUTFILE_XBM >$ERRORFILE
rm -f $OUTFILE_PS
chmod ugo+wr $OUTFILE_XBM
#
# OUTPUT
#
cat << HTML
HTML
fi
if [ $FORMAT = 'PS' ];then
cat <View Postscript of Graph
To load a postscript version of the graph into your local
postscript viewer, select HERE
HTML
fi
if [ $FORMAT = 'TEXT' ];then
cd $PLOT_ROOT
for NAMES in `cat $PLOTLIST1`
do
echo '
'
echo ''
cat $NAMES|sed "s/#!/Machine: <\/STRONG>/"|sed "s/#//g"
echo '
'
done
rm $GNUFILE
fi
cat <
to GBIS Home Page
University of Southampton
High Performance Computing Centre
Submitted by Mark Papiani,
last updated 24 February 1995.
HTML
rm $ERRORFILE