commtechs bench: Separate bench in 2 benchs

This commit is contained in:
Thomas Preud'homme 2009-06-24 20:14:50 +02:00 committed by Thomas Preud'homme
parent b58d18cc5d
commit 72db76b9fa
1 changed files with 47 additions and 42 deletions

View File

@ -6,6 +6,8 @@ set -u
comList=`ls *.log | perl -ni -e '/-([^-]+)_comm/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
cacheList=`ls *log | perl -ni -e '/cache_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
prodList=`ls *.log | perl -ni -e '/typeProd_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
barriereList="jikes_barrier asm_cache c_cache fake"
communicationList="asm_cache c_cache shared_mem shared_mem_opt pipe"
metriqueList="cache_hits cache_miss cycles total_time"
@ -14,58 +16,61 @@ echo "set style histogram cluster gap 1" >> multicores.gnuplot
echo "set style fill solid border -1" >> multicores.gnuplot
echo "set boxwidth 0.9" >> multicores.gnuplot
echo "set xtic rotate by -45" >> multicores.gnuplot
echo "set yrange [1:*]" >> multicores.gnuplot
echo "set bmargin 5" >> multicores.gnuplot
echo "set terminal postscript landscape color" >> multicores.gnuplot
for prod in $prodList ; do
for metrique in $metriqueList ; do
> prod_$prod-$metrique.dat
done
for com in $comList ; do
for bench in "communication" "barriere" ; do
for metrique in $metriqueList ; do
echo -ne "\n$com\t\t" >> prod_$prod-$metrique.dat
> $bench-prod_$prod-$metrique.dat
done
for cache in $cacheList ; do
for value in `perl -n -e 'print "$1 $2 $3" if /cache hits.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value " >> prod_$prod-cache_hits.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /cache miss.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> prod_$prod-cache_miss.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /cycles.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> prod_$prod-cycles.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /total_time.* (\S+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> prod_$prod-total_time.dat
for com in `eval echo \\\$\${bench}List` ; do
for metrique in $metriqueList ; do
echo -ne "\n$com\t\t" >> $bench-prod_$prod-$metrique.dat
done
for cache in $cacheList ; do
for value in `perl -n -e 'print "$1 $2 $3" if /cache hits.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value " >> $bench-prod_$prod-cache_hits.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /cache miss.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> $bench-prod_$prod-cache_miss.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /cycles.* (\d+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> $bench-prod_$prod-cycles.dat
done
for value in `perl -n -e 'print "$1 $2 $3" if /total_time.* (\S+) \/ (\S+) \/ (\S+)/' cache_$cache-*-typeProd_$prod-*-${com}_comm.log` ; do
echo -ne "\t$value" >> $bench-prod_$prod-total_time.dat
done
done
done
for metrique in $metriqueList ; do
case "$metrique" in
cache_hits) ylabel="Nb cache hit" ;;
cache_miss) ylabel="Nb cache miss" ;;
cycles) ylabel="Nb cycles" ;;
total_time) ylabel="Secondes" ;;
*) echo "Pas de label pour cette métrique : $metrique" ; exit 1 ;;
esac
for yscale in "nologscale" "logscale" ; do
echo "set $yscale y" >> multicores.gnuplot
[ "$yscale" = "nologscale" ] && echo "set yrange [0:*]" >> multicores.gnuplot \
|| echo "set yrange [*:*]" >> multicores.gnuplot
echo "set title \"Producteur : $prod\"" >> multicores.gnuplot
echo "set ylabel \"$ylabel\"" >> multicores.gnuplot
echo "set output '$bench-prod_$prod-$metrique-total-$yscale.ps'" >> multicores.gnuplot
echo "plot '$bench-prod_$prod-$metrique.dat' using 2:xtic(1) ti 'L2', '' u 5 ti 'MEM'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par boucle\"" >> multicores.gnuplot
echo "set output '$bench-prod_$prod-$metrique-byLoop-$yscale.ps'" >> multicores.gnuplot
echo "plot '$bench-prod_$prod-$metrique.dat' using 3:xtic(1) ti 'L2', '' u 6 ti 'MEM'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par ecriture\"" >> multicores.gnuplot
echo "set output '$bench-prod_$prod-$metrique-byWrite-$yscale.ps'" >> multicores.gnuplot
echo "plot '$bench-prod_$prod-$metrique.dat' using 4:xtic(1) ti 'L2', '' u 7 ti 'MEM'" >> multicores.gnuplot
done
done
done
for metrique in $metriqueList ; do
case "$metrique" in
cache_hits) ylabel="Nb cache hit" ;;
cache_miss) ylabel="Nb cache miss" ;;
cycles) ylabel="Nb cycles" ;;
total_time) ylabel="Secondes" ;;
*) echo "Pas de label pour cette métrique : $metrique" ; exit 1 ;;
esac
for yscale in "nologscale" "logscale" ; do
echo "set $yscale y" >> multicores.gnuplot
echo "set title \"Producteur : $prod\"" >> multicores.gnuplot
echo "set ylabel \"$ylabel\"" >> multicores.gnuplot
echo "set output 'prod_$prod-$metrique-total-$yscale.ps'" >> multicores.gnuplot
echo "plot 'prod_$prod-$metrique.dat' using 2:xtic(1) ti 'L2', '' u 5 ti 'MEM'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par boucle\"" >> multicores.gnuplot
echo "set output 'prod_$prod-$metrique-byLoop-$yscale.ps'" >> multicores.gnuplot
echo "plot 'prod_$prod-$metrique.dat' using 3:xtic(1) ti 'L2', '' u 6 ti 'MEM'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par ecriture\"" >> multicores.gnuplot
echo "set output 'prod_$prod-$metrique-byWrite-$yscale.ps'" >> multicores.gnuplot
echo "plot 'prod_$prod-$metrique.dat' using 4:xtic(1) ti 'L2', '' u 7 ti 'MEM'" >> multicores.gnuplot
done
done
done
done
gnuplot multicores.gnuplot