diff --git a/communication_techniques/.channel.d b/communication_techniques/.channel.d deleted file mode 100644 index ba813ca..0000000 --- a/communication_techniques/.channel.d +++ /dev/null @@ -1 +0,0 @@ -channel.o .channel.d: channel.c channel.h Makefile diff --git a/communication_techniques/lancement.sh b/communication_techniques/lancement.sh index 369a3c5..362556a 100755 --- a/communication_techniques/lancement.sh +++ b/communication_techniques/lancement.sh @@ -3,6 +3,8 @@ set -u set -v +LC_ALL=C + # Files and directories binDir="bin" calcDir="calculation" diff --git a/communication_techniques/parsing.sh b/communication_techniques/parsing.sh index 8a67f7f..463c575 100755 --- a/communication_techniques/parsing.sh +++ b/communication_techniques/parsing.sh @@ -39,10 +39,13 @@ init_log_vars () { local firstBarriereComm - - cacheList=`ls *log | perl -ni -e '/cache_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'` + cacheList=`ls *log | perl -ni -e '/cache_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}' | sed -r "s/ +\$//"` prodList=`ls *.log | perl -ni -e '/typeProd_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'` - 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 "$_ "}}'` + 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 metriqueList="cache_hits cache_miss cycles total_time" nbIter=`ls -1 *.log | head -1 | sed -r "s/^.*nbIter_([[:digit:]]+).*$/\1/"` valuePerCacheLine=$(grep "^buf size: " $(ls -1 *.log | head -1) | sed -r "s/^buf size: ([[:digit:]]+)$/\1/") @@ -126,10 +129,11 @@ contains_zero() create_dat_header () { - local prod bench metrique - + local prod bench metrique numCacheConfigs - prod="$1" bench="$2" metrique="$3" + numCacheConfigs="$4" # Create file > bench_$bench-prod_$prod-metrique_$metrique.dat @@ -151,7 +155,7 @@ create_dat_header () done # Several points per com and cache (one per calc argument) else - for i in 1 2 + for i in $(seq "$numCacheConfigs") do if [ $i -ne 1 ] then @@ -180,7 +184,7 @@ get_metric_values () metriquePattern="$5" logFile=cache_$cache-*-typeProd_$prod-argTypeProd_$argTypeProd-*-${com}_comm.log - metricValues=$(grep -E "$metriquePattern" $logFile | sed -r "s/^(.*[^[:alnum:].])?($metriquePattern)([^[:alnum:]].*)?$/\2/;s/^(.*[^[:alnum:].])?([[:digit:].]+)([^[:alnum:]].*)?$/\2/") + metricValues=$(grep -E "$metriquePattern" $logFile | sed -r "s/^(.*[^[:alnum:].,])?($metriquePattern)([^[:alnum:]].*)?$/\2/;s/^(.*[^[:alnum:].,])?([[:digit:].,]+)([^[:alnum:]].*)?$/\2/;s/[,.]/./") totalValue=0 for metricValue in $metricValues do @@ -291,25 +295,33 @@ create_gnuplot_header () create_simple_gnuplot_body () { - local metrique ylabel yscale patternPlotFile datFile - + local metrique ylabel yscale patternPlotFile datFile numCacheConfigs - ylabel="$1" lineNum="$2" datFile="$3" patternPlotFile="$4" + numCacheConfigs="$5" echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot echo "set output 'images/$patternPlotFile.ps'" >> $patternPlotFile.gnuplot - echo "plot '$datFile' every 3::$lineNum using 2:xtic(1) , '' every 3::$lineNum u 3" >> $patternPlotFile.gnuplot + echo -n "plot '$datFile' every 3::$lineNum using 2:xtic(1)" >> $patternPlotFile.gnuplot + if [ $numCacheConfigs -gt 2 ] + then + echo " , '' every 3::$lineNum u 3" >> $patternPlotFile.gnuplot + else + echo "" >> patternPlotFile.gnuplot + fi } create_complex_gnuplot_body () { - local bench ylabel lineNum datFile patternPlotFile columnNo baseTitle - + local bench ylabel lineNum datFile patternPlotFile columnNo baseTitle numCacheConfigs - bench="$1" ylabel="$2" lineNum="$3" datFile="$4" patternPlotFile="$5" + numCacheConfigs="$6" columnNo=2 echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot @@ -323,7 +335,10 @@ create_complex_gnuplot_body () echo -n "plot '$datFile' " >> $patternPlotFile.gnuplot fi echo -n "every :2:$lineNum:0:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (L2)'" >> $patternPlotFile.gnuplot - echo -n ", '' every :2:$lineNum:1:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> $patternPlotFile.gnuplot + if [ $numCacheConfigs -gt 2 ] + then + echo -n ", '' every :2:$lineNum:1:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (mem)'" >> $patternPlotFile.gnuplot + fi columnNo=$((columnNo + 1)) done echo >> $patternPlotFile.gnuplot @@ -331,7 +346,7 @@ create_complex_gnuplot_body () create_gnuplot_body () { - local prod bench yscale ylabel lineNum datFile patternPlotFile - + local prod bench yscale ylabel lineNum datFile patternPlotFile numCacheConfigs - prod="$1" bench="$2" yscale="$3" @@ -339,6 +354,7 @@ create_gnuplot_body () lineNum="$5" datFile="$6" patternPlotFile="$7" + numCacheConfigs="$8" echo "set $yscale y" >> $patternPlotFile.gnuplot if [ "$yscale" = "nologscale" ] @@ -350,19 +366,20 @@ create_gnuplot_body () echo "set title \"Producteur : $prod\"" >> $patternPlotFile.gnuplot if use_histo "$prod" "$bench" then - create_simple_gnuplot_body "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" + create_simple_gnuplot_body "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs" else - create_complex_gnuplot_body "$bench" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" + create_complex_gnuplot_body "$bench" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs" fi } create_gnuplot_file () { - local prod bench metrique ylabel yscale avg lineNum - + local prod bench metrique ylabel yscale avg lineNum numCacheConfigs - prod="$1" bench="$2" metrique="$3" baseYlabel="$4" + numCacheConfigs="$5" for yscale in "nologscale" "logscale" do @@ -384,7 +401,7 @@ create_gnuplot_file () if [ $yscale != "logscale" ] || ! contains_zero "$prod" "$bench" "$datFile" "$lineNum" then create_gnuplot_header "$prod" "$bench" "$patternPlotFile.gnuplot" - create_gnuplot_body "$prod" "$bench" "$yscale" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" + create_gnuplot_body "$prod" "$bench" "$yscale" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs" fi done done @@ -418,16 +435,17 @@ main() metriquePattern="[[:digit:]]+ +cycles " ylabel="Nb cycles" ;; total_time) - metriquePattern="[[:digit:].]+ +seconds time elapsed " + 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 - create_dat_header "$prod" "$bench" "$metrique" + 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" + create_gnuplot_file "$prod" "$bench" "$metrique" "$ylabel" "$numCacheConfigs" done done done