2010-05-17 17:34:26 +02:00
|
|
|
#!/bin/sh
|
2009-06-23 12:45:15 +02:00
|
|
|
|
|
|
|
set -u
|
|
|
|
|
2010-05-18 09:34:25 +02:00
|
|
|
init_bench_vars ()
|
|
|
|
{
|
2010-09-22 18:15:57 +02:00
|
|
|
local ourBenchs onlyWBBenchs comList com -
|
2010-05-18 09:34:25 +02:00
|
|
|
|
2011-03-02 12:11:22 +01:00
|
|
|
ourBenchs="batch_queue"
|
2010-09-22 18:15:57 +02:00
|
|
|
onlyWBBenchs="jikes_barrier"
|
|
|
|
comList=`ls *.log | perl -ni -e '/-([^-]+)_comm/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
|
|
|
|
if [ -z "${barriereList:-}" ]
|
|
|
|
then
|
|
|
|
for com in $comList
|
|
|
|
do
|
|
|
|
if echo $ourBenchs | grep "$com" > /dev/null 2>&1
|
|
|
|
then
|
|
|
|
barriereList="${barriereList:-}${barriereList:+ }$com"
|
|
|
|
fi
|
|
|
|
if echo $onlyWBBenchs | grep "$com" > /dev/null 2>&1
|
|
|
|
then
|
|
|
|
barriereList="${barriereList:-}${barriereList:+ }$com"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
if [ -z "${communicationList:-}" ]
|
|
|
|
then
|
|
|
|
for com in $comList
|
|
|
|
do
|
|
|
|
if echo $onlyWBBenchs | grep -v "$com" > /dev/null 2>&1
|
|
|
|
then
|
|
|
|
communicationList="${communicationList:-}${communicationList:+ }$com"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
2010-05-18 09:34:25 +02:00
|
|
|
}
|
2009-06-23 12:45:15 +02:00
|
|
|
|
2010-05-18 09:34:25 +02:00
|
|
|
init_log_vars ()
|
|
|
|
{
|
|
|
|
local firstBarriereComm -
|
|
|
|
|
2011-02-24 20:58:37 +01:00
|
|
|
cacheList=`ls *log | perl -ni -e '/cache_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}' | sed -r "s/ +\$//"`
|
2010-05-18 09:34:25 +02:00
|
|
|
prodList=`ls *.log | perl -ni -e '/typeProd_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
|
2011-02-24 20:58:37 +01:00
|
|
|
if ls "*typeProd_useless_loop*_comm.log" >/dev/null 2>&1
|
|
|
|
then
|
|
|
|
firstBarriereComm=`echo $barriereList | sed -r "s/^[^ ]* .*$//"`
|
|
|
|
argTypeProdList=`eval ls *typeProd_useless_loop*${firstBarriereComm}_comm.log | perl -ni -e '/argTypeProd_([\d]+)-/; $a{$1}=""; END { foreach ( sort { $a <=> $b } keys %a ) {print "$_ "}}'`
|
|
|
|
fi
|
2010-05-18 09:34:25 +02:00
|
|
|
metriqueList="cache_hits cache_miss cycles total_time"
|
2010-09-22 18:15:57 +02:00
|
|
|
nbIter=`ls -1 *.log | head -1 | sed -r "s/^.*nbIter_([[:digit:]]+).*$/\1/"`
|
2011-05-04 19:30:49 +02:00
|
|
|
valuePerCacheLine=$(grep "^buf size: " *.log | head -1 | sed -r "s/^.*:buf size: ([[:digit:]]+)$/\1/")
|
2010-05-18 09:34:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
parse_args ()
|
|
|
|
{
|
|
|
|
local opt optNum -
|
|
|
|
|
2010-08-12 05:11:46 +02:00
|
|
|
logDir=$(pwd)
|
|
|
|
optNum=0
|
|
|
|
while [ $# -gt $optNum ]
|
|
|
|
do
|
|
|
|
optNum=$((optNum + 1))
|
|
|
|
eval opt=\$$optNum
|
|
|
|
case $opt in
|
|
|
|
"-e")
|
|
|
|
if [ $# -gt $optNum ]
|
|
|
|
then
|
|
|
|
optNum=$((optNum + 1))
|
|
|
|
eval opt=\$$optNum
|
|
|
|
eval "$opt"
|
|
|
|
else
|
|
|
|
echo "Missing argument after \"-e\""
|
|
|
|
return 1
|
|
|
|
fi ;;
|
|
|
|
*)
|
|
|
|
logDir="$opt" ;;
|
|
|
|
esac
|
|
|
|
done
|
2010-05-18 09:34:25 +02:00
|
|
|
return 0
|
|
|
|
}
|
2009-06-23 12:45:15 +02:00
|
|
|
|
2010-02-25 17:21:45 +01:00
|
|
|
use_histo ()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
|
|
|
|
[ "$bench" = "communication" -o "$prod" != "useless_loop" ]
|
|
|
|
return $?
|
|
|
|
}
|
|
|
|
|
2010-05-15 22:32:35 +02:00
|
|
|
contains_zero()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench datFile lineNum commTechs nbCommTechs nbArg iMin iMax -
|
2010-05-15 22:32:35 +02:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
datFile="$3"
|
|
|
|
lineNum="$4"
|
|
|
|
|
|
|
|
if use_histo "$prod" "$bench"
|
|
|
|
then
|
|
|
|
eval commTechs=\$${bench}List
|
|
|
|
# Count the number of spaces in the list + the line feed
|
|
|
|
nbCommTechs=$(echo $commTechs | sed -r "s/[^ ]//g" | wc -c)
|
|
|
|
iMin=$((lineNum + 4))
|
|
|
|
iMax=$((lineNum + 1 + nbCommTechs * 3))
|
|
|
|
for i in $(seq $iMin 3 $iMax)
|
|
|
|
do
|
2010-10-14 00:01:32 +02:00
|
|
|
if head -$i $datFile | tail -1 | grep -E "\.0+([^[:digit:]])?$" > /dev/null
|
2010-05-15 22:32:35 +02:00
|
|
|
then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
else
|
|
|
|
iMin=$((lineNum + 9))
|
|
|
|
# Count the number of spaces in the list + the line feed
|
|
|
|
nbArg=$(echo $argTypeProdList | sed -r "s/[^ ]//g" | wc -c)
|
|
|
|
iMax=$((iMin + nbArg * 8 - 4))
|
|
|
|
for i in $(seq $iMin 4 $iMax)
|
|
|
|
do
|
2010-10-14 00:01:32 +02:00
|
|
|
if head -$i $datFile | tail -1 | grep -E "\.0+([^[:digit:]])?$" > /dev/null
|
2010-05-15 22:32:35 +02:00
|
|
|
then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2010-02-25 17:21:45 +01:00
|
|
|
create_dat_header ()
|
|
|
|
{
|
2011-02-24 20:58:37 +01:00
|
|
|
local prod bench metrique numCacheConfigs -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
metrique="$3"
|
2011-02-24 20:58:37 +01:00
|
|
|
numCacheConfigs="$4"
|
2010-02-25 17:21:45 +01:00
|
|
|
|
|
|
|
# Create file
|
|
|
|
> bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
|
|
|
|
# Only one point per com and cache
|
|
|
|
if use_histo "$prod" "$bench"
|
|
|
|
then
|
|
|
|
for i in 1 2 3 # 1: total, 2: by loop, 3: by write
|
|
|
|
do
|
|
|
|
if [ $i -ne 1 ]
|
|
|
|
then
|
|
|
|
echo >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
fi
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "Method\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2010-02-25 17:21:45 +01:00
|
|
|
for cache in $cacheList
|
|
|
|
do
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "\t$cache" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2010-02-25 17:21:45 +01:00
|
|
|
done
|
|
|
|
done
|
|
|
|
# Several points per com and cache (one per calc argument)
|
|
|
|
else
|
2011-02-24 20:58:37 +01:00
|
|
|
for i in $(seq "$numCacheConfigs")
|
2010-02-25 17:21:45 +01:00
|
|
|
do
|
|
|
|
if [ $i -ne 1 ]
|
|
|
|
then
|
|
|
|
echo >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
fi
|
|
|
|
for j in 1 2 3 # 1: total, 2: by loop, 3: by write
|
|
|
|
do
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2010-02-25 17:21:45 +01:00
|
|
|
for com in $barriereList
|
|
|
|
do
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "\t$com" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2009-06-24 20:14:50 +02:00
|
|
|
done
|
2010-02-25 17:21:45 +01:00
|
|
|
echo >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
done
|
2009-07-28 01:16:11 +02:00
|
|
|
done
|
2010-02-25 17:21:45 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
get_metric_values ()
|
|
|
|
{
|
2010-09-22 18:15:57 +02:00
|
|
|
local prod com cache argTypeProd logFile metricValues totalValue metricValue loopValue stepValue -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
com="$2"
|
|
|
|
cache="$3"
|
|
|
|
argTypeProd="$4"
|
|
|
|
metriquePattern="$5"
|
|
|
|
|
|
|
|
logFile=cache_$cache-*-typeProd_$prod-argTypeProd_$argTypeProd-*-${com}_comm.log
|
2011-02-24 20:58:37 +01:00
|
|
|
metricValues=$(grep -E "$metriquePattern" $logFile | sed -r "s/^(.*[^[:alnum:].,])?($metriquePattern)([^[:alnum:]].*)?$/\2/;s/^(.*[^[:alnum:].,])?([[:digit:].,]+)([^[:alnum:]].*)?$/\2/;s/[,.]/./")
|
2010-09-22 18:15:57 +02:00
|
|
|
totalValue=0
|
|
|
|
for metricValue in $metricValues
|
|
|
|
do
|
|
|
|
totalValue=$(echo "$totalValue + $metricValue" | bc)
|
|
|
|
done
|
|
|
|
echo -n "$totalValue"
|
|
|
|
loopValue="$(echo "$totalValue / $nbIter" | bc -l)"
|
|
|
|
echo -n " $loopValue"
|
|
|
|
stepValue=$(echo "$totalValue / $nbIter / $valuePerCacheLine" | bc -l)
|
|
|
|
echo -n " $stepValue"
|
2010-02-25 17:21:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
create_simple_dat_body ()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench metrique argTypeProd -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
metrique="$3"
|
|
|
|
argTypeProd="$4"
|
|
|
|
|
|
|
|
for com in `eval echo \\\$\${bench}List`
|
|
|
|
do
|
|
|
|
for i in 1 2 3 # 1: total, 2: by loop, 3: by write
|
|
|
|
do
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "\n$com\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2010-02-25 17:21:45 +01:00
|
|
|
for cache in $cacheList
|
|
|
|
do
|
|
|
|
if [ $i -eq 1 ]
|
|
|
|
then
|
|
|
|
valuetmp=`get_metric_values "$prod" "$com" "$cache" "$argTypeProd" "$metriquePattern"`
|
|
|
|
eval value$cache=\"$valuetmp\"
|
|
|
|
fi
|
2010-05-17 17:34:26 +02:00
|
|
|
eval echo -n "\${value$cache}" | sed -r "s/^([^ ]+ ){$((i-1))}([^ ]+).*/\t\2/" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2009-07-28 01:16:11 +02:00
|
|
|
done
|
2010-02-25 17:21:45 +01:00
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
create_complex_dat_body ()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench metrique -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
metrique="$3"
|
|
|
|
|
|
|
|
for argTypeProd in $argTypeProdList
|
|
|
|
do
|
|
|
|
for cache in $cacheList
|
|
|
|
do
|
|
|
|
if [ $cache != ${cacheList%% *} -o $argTypeProd != ${argTypeProdList%% *} ]
|
|
|
|
then
|
|
|
|
echo "" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
fi
|
|
|
|
for i in 1 2 3 # 1: total, 2: by loop, 3: by write
|
|
|
|
do
|
2010-05-17 17:34:26 +02:00
|
|
|
echo -n "\n$argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2010-02-25 17:21:45 +01:00
|
|
|
for com in `eval echo \\\$\${bench}List`
|
|
|
|
do
|
|
|
|
if [ $i -eq 1 ]
|
|
|
|
then
|
|
|
|
valuetmp=`get_metric_values "$prod" "$com" "$cache" "$argTypeProd" "$metriquePattern"`
|
|
|
|
eval value$com=\"$valuetmp\"
|
|
|
|
fi
|
2010-05-17 17:34:26 +02:00
|
|
|
eval echo -n "\${value$com}" | sed -r "s/^([^ ]+ ){$((i-1))}([^ ]+).*/\t\2/" >> bench_$bench-prod_$prod-metrique_$metrique.dat
|
2009-06-24 20:14:50 +02:00
|
|
|
done
|
|
|
|
done
|
2010-02-25 17:21:45 +01:00
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
create_dat_body ()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench metrique argTypeProd -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
metrique="$3"
|
|
|
|
argTypeProd="$4"
|
|
|
|
|
|
|
|
if use_histo "$prod" "$bench"
|
|
|
|
then
|
|
|
|
create_simple_dat_body "$prod" "$bench" "$metrique" "$argTypeProd" "$metriquePattern"
|
|
|
|
else
|
|
|
|
create_complex_dat_body "$prod" "$bench" "$metrique" "$argTypeProd" "$metriquePattern"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
create_gnuplot_header ()
|
|
|
|
{
|
2010-05-17 17:34:26 +02:00
|
|
|
local prod bench gnuplotFile -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
gnuplotFile="$3"
|
|
|
|
|
|
|
|
echo "set style fill solid border -1" > $gnuplotFile
|
|
|
|
echo "set boxwidth 0.9" >> $gnuplotFile
|
|
|
|
echo "set xtic rotate by -45" >> $gnuplotFile
|
|
|
|
echo "set bmargin 5" >> $gnuplotFile
|
|
|
|
echo "set terminal postscript landscape color" >> $gnuplotFile
|
|
|
|
if use_histo "$prod" "$bench"
|
|
|
|
then
|
2010-05-15 16:38:42 +02:00
|
|
|
echo "set key autotitle columnhead" >> $gnuplotFile
|
2010-02-25 17:21:45 +01:00
|
|
|
echo "set style data histogram" >> $gnuplotFile
|
|
|
|
echo "set style histogram cluster gap 1" >> $gnuplotFile
|
|
|
|
else
|
|
|
|
echo "set style data linespoints" >> $gnuplotFile
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
create_simple_gnuplot_body ()
|
|
|
|
{
|
2011-03-02 12:44:00 +01:00
|
|
|
local metrique ylabel yscale patternPlotFile datFile numCacheConfigs i -
|
2010-02-25 17:21:45 +01:00
|
|
|
ylabel="$1"
|
|
|
|
lineNum="$2"
|
|
|
|
datFile="$3"
|
|
|
|
patternPlotFile="$4"
|
2011-02-24 20:58:37 +01:00
|
|
|
numCacheConfigs="$5"
|
2010-02-25 17:21:45 +01:00
|
|
|
|
|
|
|
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
2010-05-15 17:09:41 +02:00
|
|
|
echo "set output 'images/$patternPlotFile.ps'" >> $patternPlotFile.gnuplot
|
2011-02-24 20:58:37 +01:00
|
|
|
echo -n "plot '$datFile' every 3::$lineNum using 2:xtic(1)" >> $patternPlotFile.gnuplot
|
2011-03-02 12:44:00 +01:00
|
|
|
if [ $numCacheConfigs -ge 2 ]
|
2011-02-24 20:58:37 +01:00
|
|
|
then
|
2011-03-02 12:44:00 +01:00
|
|
|
i=2
|
|
|
|
while [ $i -le $numCacheConfigs ]
|
|
|
|
do
|
|
|
|
echo -n " , '' every 3::$lineNum u $((i+1))" >> $patternPlotFile.gnuplot
|
|
|
|
i=$((i+1))
|
|
|
|
done
|
2011-02-24 20:58:37 +01:00
|
|
|
fi
|
2011-03-02 12:44:00 +01:00
|
|
|
echo "" >> patternPlotFile.gnuplot
|
2010-02-25 17:21:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
create_complex_gnuplot_body ()
|
|
|
|
{
|
2011-02-24 20:58:37 +01:00
|
|
|
local bench ylabel lineNum datFile patternPlotFile columnNo baseTitle numCacheConfigs -
|
2010-02-25 17:21:45 +01:00
|
|
|
bench="$1"
|
|
|
|
ylabel="$2"
|
|
|
|
lineNum="$3"
|
|
|
|
datFile="$4"
|
|
|
|
patternPlotFile="$5"
|
2011-02-24 20:58:37 +01:00
|
|
|
numCacheConfigs="$6"
|
2010-02-25 17:21:45 +01:00
|
|
|
columnNo=2
|
|
|
|
|
|
|
|
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
2010-05-15 17:09:41 +02:00
|
|
|
echo "set output 'images/$patternPlotFile.ps'" >> $patternPlotFile.gnuplot
|
2010-02-25 17:21:45 +01:00
|
|
|
for com in `eval echo \\\$\${bench}List` ; do
|
|
|
|
baseTitle=`head -1 $datFile | cut -f $((columnNo + 2))`
|
|
|
|
if [ $columnNo -ne 2 ]
|
|
|
|
then
|
|
|
|
echo -n ", '' " >> $patternPlotFile.gnuplot
|
2010-02-23 11:35:25 +01:00
|
|
|
else
|
2010-02-25 17:21:45 +01:00
|
|
|
echo -n "plot '$datFile' " >> $patternPlotFile.gnuplot
|
2010-02-23 11:35:25 +01:00
|
|
|
fi
|
2010-02-25 17:21:45 +01:00
|
|
|
echo -n "every :2:$lineNum:0:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (L2)'" >> $patternPlotFile.gnuplot
|
2011-02-24 20:58:37 +01:00
|
|
|
if [ $numCacheConfigs -gt 2 ]
|
|
|
|
then
|
|
|
|
echo -n ", '' every :2:$lineNum:1:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> $patternPlotFile.gnuplot
|
|
|
|
fi
|
2010-02-25 17:21:45 +01:00
|
|
|
columnNo=$((columnNo + 1))
|
|
|
|
done
|
|
|
|
echo >> $patternPlotFile.gnuplot
|
|
|
|
}
|
|
|
|
|
|
|
|
create_gnuplot_body ()
|
|
|
|
{
|
2011-02-24 20:58:37 +01:00
|
|
|
local prod bench yscale ylabel lineNum datFile patternPlotFile numCacheConfigs -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
yscale="$3"
|
|
|
|
ylabel="$4"
|
|
|
|
lineNum="$5"
|
|
|
|
datFile="$6"
|
|
|
|
patternPlotFile="$7"
|
2011-02-24 20:58:37 +01:00
|
|
|
numCacheConfigs="$8"
|
2010-02-25 17:21:45 +01:00
|
|
|
|
|
|
|
echo "set $yscale y" >> $patternPlotFile.gnuplot
|
|
|
|
if [ "$yscale" = "nologscale" ]
|
|
|
|
then
|
|
|
|
echo "set yrange [0:*]" >> $patternPlotFile.gnuplot
|
|
|
|
else
|
|
|
|
echo "set yrange [*:*]" >> $patternPlotFile.gnuplot
|
|
|
|
fi
|
|
|
|
echo "set title \"Producteur : $prod\"" >> $patternPlotFile.gnuplot
|
|
|
|
if use_histo "$prod" "$bench"
|
|
|
|
then
|
2011-02-24 20:58:37 +01:00
|
|
|
create_simple_gnuplot_body "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs"
|
2010-02-25 17:21:45 +01:00
|
|
|
else
|
2011-02-24 20:58:37 +01:00
|
|
|
create_complex_gnuplot_body "$bench" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs"
|
2010-02-25 17:21:45 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
create_gnuplot_file ()
|
|
|
|
{
|
2011-02-24 20:58:37 +01:00
|
|
|
local prod bench metrique ylabel yscale avg lineNum numCacheConfigs -
|
2010-02-25 17:21:45 +01:00
|
|
|
prod="$1"
|
|
|
|
bench="$2"
|
|
|
|
metrique="$3"
|
|
|
|
baseYlabel="$4"
|
2011-02-24 20:58:37 +01:00
|
|
|
numCacheConfigs="$5"
|
2010-02-25 17:21:45 +01:00
|
|
|
|
|
|
|
for yscale in "nologscale" "logscale"
|
|
|
|
do
|
|
|
|
for avg in total byLoop byWrite
|
|
|
|
do
|
|
|
|
case $avg in
|
|
|
|
total)
|
|
|
|
lineNum=0
|
|
|
|
ylabel="$baseYlabel" ;;
|
|
|
|
byLoop)
|
|
|
|
lineNum=1
|
|
|
|
ylabel="$baseYlabel par boucle" ;;
|
|
|
|
byWrite)
|
|
|
|
lineNum=2
|
|
|
|
ylabel="$baseYlabel par ecriture" ;;
|
|
|
|
esac
|
|
|
|
datFile=bench_$bench-prod_$prod-metrique_$metrique.dat
|
|
|
|
patternPlotFile="bench_$bench-prod_$prod-$metrique-$avg-$yscale" # Name without extension of plot and ps files
|
2010-05-15 22:32:35 +02:00
|
|
|
if [ $yscale != "logscale" ] || ! contains_zero "$prod" "$bench" "$datFile" "$lineNum"
|
2010-02-25 17:21:45 +01:00
|
|
|
then
|
2010-05-15 19:46:08 +02:00
|
|
|
create_gnuplot_header "$prod" "$bench" "$patternPlotFile.gnuplot"
|
2011-02-24 20:58:37 +01:00
|
|
|
create_gnuplot_body "$prod" "$bench" "$yscale" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs"
|
2010-02-25 17:21:45 +01:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2010-05-15 19:56:26 +02:00
|
|
|
main()
|
|
|
|
{
|
2011-05-04 15:27:35 +02:00
|
|
|
local logDir benchName -
|
2010-05-17 17:34:26 +02:00
|
|
|
|
2010-05-18 09:34:25 +02:00
|
|
|
parse_args "$@"
|
|
|
|
cd $logDir
|
2010-09-22 18:15:57 +02:00
|
|
|
init_bench_vars
|
2010-05-18 09:34:25 +02:00
|
|
|
init_log_vars
|
2010-05-17 17:35:35 +02:00
|
|
|
|
2010-05-15 19:56:26 +02:00
|
|
|
for prod in $prodList ; do
|
|
|
|
case "$prod" in
|
|
|
|
matrice) argTypeProd=16 ;;
|
|
|
|
*) argTypeProd=1 ;;
|
|
|
|
esac
|
|
|
|
for bench in "communication" "barriere" ; do
|
2011-05-04 15:27:35 +02:00
|
|
|
eval benchName="\${${bench}List:-}"
|
|
|
|
if [ -n "${benchName}" ]
|
|
|
|
then
|
|
|
|
# Create dat headers
|
|
|
|
for metrique in $metriqueList ; do
|
|
|
|
case "$metrique" in
|
|
|
|
cache_hits)
|
|
|
|
metriquePattern="[[:digit:]]+ +(L1-dcache-loads|L1-dcache-stores|L1-dcache-prefetches|LLC-loads|LLC-stores|LLC-prefetches) "
|
|
|
|
ylabel="Nb cache hit" ;;
|
|
|
|
cache_miss)
|
|
|
|
metriquePattern="[[:digit:]]+ +(L1-dcache-load-misses|L1-dcache-store-misses|L1-dcache-prefetch-misses|LLC-load-misses|LLC-store-misses|LLC-prefetch-misses) "
|
|
|
|
ylabel="Nb cache miss" ;;
|
|
|
|
cycles)
|
|
|
|
metriquePattern="[[:digit:]]+ +cycles "
|
|
|
|
ylabel="Nb cycles" ;;
|
|
|
|
total_time)
|
|
|
|
metriquePattern="[[:digit:].,]+ +seconds time elapsed "
|
|
|
|
ylabel="Secondes" ;;
|
|
|
|
*)
|
|
|
|
echo "Pas de pattern pour cette métrique : $metrique"
|
|
|
|
echo "Pas de label pour cette métrique : $metrique"
|
|
|
|
exit 1 ;;
|
|
|
|
esac
|
|
|
|
numCacheConfigs=$(echo "$cacheList" | wc -w)
|
|
|
|
create_dat_header "$prod" "$bench" "$metrique" "$numCacheConfigs"
|
|
|
|
create_dat_body "$prod" "$bench" "$metrique" "$argTypeProd" "$metriquePattern"
|
|
|
|
create_gnuplot_file "$prod" "$bench" "$metrique" "$ylabel" "$numCacheConfigs"
|
|
|
|
done
|
|
|
|
fi
|
2009-06-24 00:53:13 +02:00
|
|
|
done
|
2009-06-23 12:45:15 +02:00
|
|
|
done
|
|
|
|
|
2010-05-15 19:56:26 +02:00
|
|
|
if [ ! -d images ]
|
|
|
|
then
|
|
|
|
mkdir images
|
|
|
|
fi
|
2010-05-15 17:09:41 +02:00
|
|
|
|
2010-05-15 19:56:26 +02:00
|
|
|
for gnuplotFile in *.gnuplot
|
|
|
|
do
|
|
|
|
gnuplot "$gnuplotFile"
|
|
|
|
done
|
|
|
|
|
|
|
|
cd images
|
2009-06-23 12:45:15 +02:00
|
|
|
|
2010-05-15 19:56:26 +02:00
|
|
|
for psFile in *.ps
|
|
|
|
do
|
|
|
|
ps2pdf $psFile
|
|
|
|
done
|
|
|
|
}
|
2010-05-15 19:57:38 +02:00
|
|
|
|
2010-05-17 17:35:35 +02:00
|
|
|
main "$@"
|