From baff7d6b6e0706ed55c289eded0b4285d9dfbc6e Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Tue, 23 Feb 2010 11:35:25 +0100 Subject: [PATCH] [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 --- communication_techniques/parsing.sh | 66 ++++++++++++++++++----------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/communication_techniques/parsing.sh b/communication_techniques/parsing.sh index 485aee1..e1d9820 100755 --- a/communication_techniques/parsing.sh +++ b/communication_techniques/parsing.sh @@ -27,24 +27,22 @@ for prod in $prodList ; do *) argTypeProd=1 ;; esac for bench in "communication" "barriere" ; do + # Create dat headers for metrique in $metriqueList ; do > bench_$bench-prod_$prod-metrique_$metrique.dat + # Compare shared L2 to shared mem if [ $bench = "communication" -o $prod != "useless_loop" ] ; then echo -ne "Method\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat for cache in $cacheList ; do echo -ne "\t$cache" >> bench_$bench-prod_$prod-metrique_$metrique.dat done + # Compare barrier type else 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 done - echo "" >> bench_$bench-prod_$prod-metrique_$metrique.dat 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 if [ $bench = "communication" -o $prod != "useless_loop" ] ; then for com in `eval echo \\\$\${bench}List` ; do @@ -79,7 +77,9 @@ for prod in $prodList ; do esac for argTypeProd in $argTypeProdList ; 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 echo -ne "\n$argTypeProd\t\t" >> bench_$bench-prod_$prod-metrique_$metrique.dat for com in `eval echo \\\$\${bench}List` ; do @@ -94,12 +94,11 @@ for prod in $prodList ; do done done fi - if [ "${bench}" != "barriere" ] ; - then - # echo "set style data lines" >> multicores.gnuplot - #else + if [ $bench = "communication" -o $prod != "useless_loop" ] ; then echo "set style data histogram" >> multicores.gnuplot - #fi + else + echo "set style data lines" >> multicores.gnuplot + fi for metrique in $metriqueList ; do case "$metrique" in cache_hits) ylabel="Nb cache hit" ;; @@ -114,18 +113,39 @@ for prod in $prodList ; do [ "$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_$bench-prod_$prod-$metrique-total-$yscale.ps'" >> 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 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 3:2 using 2:xtic(1) title 2 , '' every 3:2 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 + if [ $bench = "communication" -o $prod != "useless_loop" ] ; then + 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 3::1 using 2:xtic(1) title 2 , '' every 3::1 u 3 ti 3" >> 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 3::2 using 2:xtic(1) title 2 , '' every 3::2 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 - fi done done @@ -134,5 +154,3 @@ gnuplot multicores.gnuplot for f in *.ps ; do ps2pdf $f done - -acroread *.pdf