[Comm tech bench] Some parsing.sh debug

- Correct some gnuplot "every" misuse
- Don't skip 2 lines for useless_loop
- Try to deal with xticlabels => Need a refactoring to have 1 gnuplot
  file per output
This commit is contained in:
Thomas Preud'homme 2010-02-23 11:35:25 +01:00 committed by Thomas Preud'homme
parent 31a2e59227
commit baff7d6b6e
1 changed files with 42 additions and 24 deletions

View File

@ -27,24 +27,22 @@ for prod in $prodList ; do
*) argTypeProd=1 ;; *) argTypeProd=1 ;;
esac esac
for bench in "communication" "barriere" ; do for bench in "communication" "barriere" ; do
# Create dat headers
for metrique in $metriqueList ; do for metrique in $metriqueList ; do
> bench_$bench-prod_$prod-metrique_$metrique.dat > bench_$bench-prod_$prod-metrique_$metrique.dat
# Compare shared L2 to shared mem
if [ $bench = "communication" -o $prod != "useless_loop" ] ; then if [ $bench = "communication" -o $prod != "useless_loop" ] ; then
echo -ne "Method\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat echo -ne "Method\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
for cache in $cacheList ; do for cache in $cacheList ; do
echo -ne "\t$cache" >> bench_$bench-prod_$prod-metrique_$metrique.dat echo -ne "\t$cache" >> bench_$bench-prod_$prod-metrique_$metrique.dat
done done
# Compare barrier type
else else
echo -ne "argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat echo -ne "argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
for com in `eval echo \\\$\${bench}List` ; do for com in $barriereList ; do
echo -ne "\t$com" >> bench_$bench-prod_$prod-metrique_$metrique.dat echo -ne "\t$com" >> bench_$bench-prod_$prod-metrique_$metrique.dat
done done
echo "" >> bench_$bench-prod_$prod-metrique_$metrique.dat
fi fi
# for file in cache_$cache-*-typeProd_$prod-*-${com}_comm.log ; do
# argTypeProd=`echo "$file" | sed -r "s/.*argTypeProd_([[:digit:]]+).*/\1/"`
# echo -ne "\t\t$argTypeProd" >> bench_$bench-prod_$prod-$metrique.dat
# done
done done
if [ $bench = "communication" -o $prod != "useless_loop" ] ; then if [ $bench = "communication" -o $prod != "useless_loop" ] ; then
for com in `eval echo \\\$\${bench}List` ; do for com in `eval echo \\\$\${bench}List` ; do
@ -79,7 +77,9 @@ for prod in $prodList ; do
esac esac
for argTypeProd in $argTypeProdList ; do for argTypeProd in $argTypeProdList ; do
for cache in $cacheList ; do for cache in $cacheList ; do
echo "" >> bench_$bench-prod_$prod-metrique_$metrique.dat if [ $cache != ${cacheList%% *} -o $argTypeProd != ${argTypeProdList%% *} ] ; then
echo "" >> bench_$bench-prod_$prod-metrique_$metrique.dat
fi
for i in 1 2 3 ; do # 1: total, 2: by loop, 3: by write for i in 1 2 3 ; do # 1: total, 2: by loop, 3: by write
echo -ne "\n$argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat echo -ne "\n$argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat
for com in `eval echo \\\$\${bench}List` ; do for com in `eval echo \\\$\${bench}List` ; do
@ -94,12 +94,11 @@ for prod in $prodList ; do
done done
done done
fi fi
if [ "${bench}" != "barriere" ] ; if [ $bench = "communication" -o $prod != "useless_loop" ] ; then
then
# echo "set style data lines" >> multicores.gnuplot
#else
echo "set style data histogram" >> multicores.gnuplot echo "set style data histogram" >> multicores.gnuplot
#fi else
echo "set style data lines" >> multicores.gnuplot
fi
for metrique in $metriqueList ; do for metrique in $metriqueList ; do
case "$metrique" in case "$metrique" in
cache_hits) ylabel="Nb cache hit" ;; cache_hits) ylabel="Nb cache hit" ;;
@ -114,18 +113,39 @@ for prod in $prodList ; do
[ "$yscale" = "nologscale" ] && echo "set yrange [0:*]" >> multicores.gnuplot \ [ "$yscale" = "nologscale" ] && echo "set yrange [0:*]" >> multicores.gnuplot \
|| echo "set yrange [*:*]" >> multicores.gnuplot || echo "set yrange [*:*]" >> multicores.gnuplot
echo "set title \"Producteur : $prod\"" >> multicores.gnuplot echo "set title \"Producteur : $prod\"" >> multicores.gnuplot
echo "set ylabel \"$ylabel\"" >> multicores.gnuplot if [ $bench = "communication" -o $prod != "useless_loop" ] ; then
echo "set output 'bench_$bench-prod_$prod-$metrique-total-$yscale.ps'" >> multicores.gnuplot echo "set ylabel \"$ylabel\"" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3:1 using 2:xtic(1) title 2 , '' every 3:1 u 3 ti 3" >> multicores.gnuplot echo "set output 'bench_$bench-prod_$prod-$metrique-total-$yscale.ps'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par boucle\"" >> multicores.gnuplot echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3::1 using 2:xtic(1) title 2 , '' every 3::1 u 3 ti 3" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-byLoop-$yscale.ps'" >> multicores.gnuplot if [ $metrique != "total_time" -o $yscale != "logscale" ] ; then
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3:2 using 2:xtic(1) title 2 , '' every 3:2 u 3 ti 3" >> multicores.gnuplot echo "set ylabel \"$ylabel par boucle\"" >> multicores.gnuplot
echo "set ylabel \"$ylabel par ecriture\"" >> multicores.gnuplot echo "set output 'bench_$bench-prod_$prod-$metrique-byLoop-$yscale.ps'" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-byWrite-$yscale.ps'" >> multicores.gnuplot echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3::2 using 2:xtic(1) title 2 , '' every 3::2 u 3 ti 3" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3:3 using 2:xtic(1) title 2 , '' every 3:3 u 3 ti 3" >> multicores.gnuplot echo "set ylabel \"$ylabel par ecriture\"" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-byWrite-$yscale.ps'" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every 3::3 using 2:xtic(1) title 2 , '' every 3::3 u 3 ti 3" >> multicores.gnuplot
fi
else
columnNo=2
for com in `eval echo \\\$\${bench}List` ; do
baseTitle=`head -1 bench_$bench-prod_$prod-metrique_$metrique.dat | cut -f $((columnNo + 2))`
echo "set xtics" >> multicores.gnuplot
echo "set ylabel \"$ylabel\"" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-total-$yscale.ps'" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every :2:0:0:0 using 1:$columnNo:xtic(1) title '$baseTitle (L2)', '' every :2:0:1:0 using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> multicores.gnuplot
if [ $metrique != "total_time" -o $yscale != "logscale" ] ; then
echo "set ylabel \"$ylabel par boucle\"" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-byLoop-$yscale.ps'" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every :2:1:0:1 using 1:$columnNo:xtic(1) title '$baseTitle (L2)', '' every :2:1:1:1 using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> multicores.gnuplot
echo "set ylabel \"$ylabel par ecriture\"" >> multicores.gnuplot
echo "set output 'bench_$bench-prod_$prod-$metrique-byWrite-$yscale.ps'" >> multicores.gnuplot
echo "plot 'bench_$bench-prod_$prod-metrique_$metrique.dat' every :2:2:0:2 using 1:$columnNo:xtic(1) title '$baseTitle (L2)', '' every :2:2:1:2 using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> multicores.gnuplot
fi
columnNo=$((columnNo + 1))
done
fi
done done
done done
fi
done done
done done
@ -134,5 +154,3 @@ gnuplot multicores.gnuplot
for f in *.ps ; do for f in *.ps ; do
ps2pdf $f ps2pdf $f
done done
acroread *.pdf