Fix various bugs in log creation and parsing
* Force english locales (esp. for numeric values) * Handle french and english numeric values * Handle absence of useless_prod log * Handle unique cache hierarchy
This commit is contained in:
parent
ee71568981
commit
f1b3174af3
|
@ -1 +0,0 @@
|
||||||
channel.o .channel.d: channel.c channel.h Makefile
|
|
|
@ -3,6 +3,8 @@
|
||||||
set -u
|
set -u
|
||||||
set -v
|
set -v
|
||||||
|
|
||||||
|
LC_ALL=C
|
||||||
|
|
||||||
# Files and directories
|
# Files and directories
|
||||||
binDir="bin"
|
binDir="bin"
|
||||||
calcDir="calculation"
|
calcDir="calculation"
|
||||||
|
|
|
@ -39,10 +39,13 @@ init_log_vars ()
|
||||||
{
|
{
|
||||||
local firstBarriereComm -
|
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 "$_ "}}'`
|
prodList=`ls *.log | perl -ni -e '/typeProd_([^-]+)-/; $a{$1}=""; END { foreach ( sort keys %a ) {print "$_ "}}'`
|
||||||
firstBarriereComm=`echo $barriereList | sed -r "s/^[^ ]* .*$//"`
|
if ls "*typeProd_useless_loop*_comm.log" >/dev/null 2>&1
|
||||||
argTypeProdList=`eval ls *typeProd_useless_loop*${firstBarriereComm}_comm.log | perl -ni -e '/argTypeProd_([\d]+)-/; $a{$1}=""; END { foreach ( sort { $a <=> $b } keys %a ) {print "$_ "}}'`
|
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"
|
metriqueList="cache_hits cache_miss cycles total_time"
|
||||||
nbIter=`ls -1 *.log | head -1 | sed -r "s/^.*nbIter_([[:digit:]]+).*$/\1/"`
|
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/")
|
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 ()
|
create_dat_header ()
|
||||||
{
|
{
|
||||||
local prod bench metrique -
|
local prod bench metrique numCacheConfigs -
|
||||||
prod="$1"
|
prod="$1"
|
||||||
bench="$2"
|
bench="$2"
|
||||||
metrique="$3"
|
metrique="$3"
|
||||||
|
numCacheConfigs="$4"
|
||||||
|
|
||||||
# Create file
|
# Create file
|
||||||
> bench_$bench-prod_$prod-metrique_$metrique.dat
|
> bench_$bench-prod_$prod-metrique_$metrique.dat
|
||||||
|
@ -151,7 +155,7 @@ create_dat_header ()
|
||||||
done
|
done
|
||||||
# Several points per com and cache (one per calc argument)
|
# Several points per com and cache (one per calc argument)
|
||||||
else
|
else
|
||||||
for i in 1 2
|
for i in $(seq "$numCacheConfigs")
|
||||||
do
|
do
|
||||||
if [ $i -ne 1 ]
|
if [ $i -ne 1 ]
|
||||||
then
|
then
|
||||||
|
@ -180,7 +184,7 @@ get_metric_values ()
|
||||||
metriquePattern="$5"
|
metriquePattern="$5"
|
||||||
|
|
||||||
logFile=cache_$cache-*-typeProd_$prod-argTypeProd_$argTypeProd-*-${com}_comm.log
|
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
|
totalValue=0
|
||||||
for metricValue in $metricValues
|
for metricValue in $metricValues
|
||||||
do
|
do
|
||||||
|
@ -291,25 +295,33 @@ create_gnuplot_header ()
|
||||||
|
|
||||||
create_simple_gnuplot_body ()
|
create_simple_gnuplot_body ()
|
||||||
{
|
{
|
||||||
local metrique ylabel yscale patternPlotFile datFile -
|
local metrique ylabel yscale patternPlotFile datFile numCacheConfigs -
|
||||||
ylabel="$1"
|
ylabel="$1"
|
||||||
lineNum="$2"
|
lineNum="$2"
|
||||||
datFile="$3"
|
datFile="$3"
|
||||||
patternPlotFile="$4"
|
patternPlotFile="$4"
|
||||||
|
numCacheConfigs="$5"
|
||||||
|
|
||||||
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
||||||
echo "set output 'images/$patternPlotFile.ps'" >> $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 ()
|
create_complex_gnuplot_body ()
|
||||||
{
|
{
|
||||||
local bench ylabel lineNum datFile patternPlotFile columnNo baseTitle -
|
local bench ylabel lineNum datFile patternPlotFile columnNo baseTitle numCacheConfigs -
|
||||||
bench="$1"
|
bench="$1"
|
||||||
ylabel="$2"
|
ylabel="$2"
|
||||||
lineNum="$3"
|
lineNum="$3"
|
||||||
datFile="$4"
|
datFile="$4"
|
||||||
patternPlotFile="$5"
|
patternPlotFile="$5"
|
||||||
|
numCacheConfigs="$6"
|
||||||
columnNo=2
|
columnNo=2
|
||||||
|
|
||||||
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
echo "set ylabel \"$ylabel\"" >> $patternPlotFile.gnuplot
|
||||||
|
@ -323,7 +335,10 @@ create_complex_gnuplot_body ()
|
||||||
echo -n "plot '$datFile' " >> $patternPlotFile.gnuplot
|
echo -n "plot '$datFile' " >> $patternPlotFile.gnuplot
|
||||||
fi
|
fi
|
||||||
echo -n "every :2:$lineNum:0:$lineNum using 1:$columnNo:xtic(1) title '$baseTitle (L2)'" >> $patternPlotFile.gnuplot
|
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))
|
columnNo=$((columnNo + 1))
|
||||||
done
|
done
|
||||||
echo >> $patternPlotFile.gnuplot
|
echo >> $patternPlotFile.gnuplot
|
||||||
|
@ -331,7 +346,7 @@ create_complex_gnuplot_body ()
|
||||||
|
|
||||||
create_gnuplot_body ()
|
create_gnuplot_body ()
|
||||||
{
|
{
|
||||||
local prod bench yscale ylabel lineNum datFile patternPlotFile -
|
local prod bench yscale ylabel lineNum datFile patternPlotFile numCacheConfigs -
|
||||||
prod="$1"
|
prod="$1"
|
||||||
bench="$2"
|
bench="$2"
|
||||||
yscale="$3"
|
yscale="$3"
|
||||||
|
@ -339,6 +354,7 @@ create_gnuplot_body ()
|
||||||
lineNum="$5"
|
lineNum="$5"
|
||||||
datFile="$6"
|
datFile="$6"
|
||||||
patternPlotFile="$7"
|
patternPlotFile="$7"
|
||||||
|
numCacheConfigs="$8"
|
||||||
|
|
||||||
echo "set $yscale y" >> $patternPlotFile.gnuplot
|
echo "set $yscale y" >> $patternPlotFile.gnuplot
|
||||||
if [ "$yscale" = "nologscale" ]
|
if [ "$yscale" = "nologscale" ]
|
||||||
|
@ -350,19 +366,20 @@ create_gnuplot_body ()
|
||||||
echo "set title \"Producteur : $prod\"" >> $patternPlotFile.gnuplot
|
echo "set title \"Producteur : $prod\"" >> $patternPlotFile.gnuplot
|
||||||
if use_histo "$prod" "$bench"
|
if use_histo "$prod" "$bench"
|
||||||
then
|
then
|
||||||
create_simple_gnuplot_body "$ylabel" "$lineNum" "$datFile" "$patternPlotFile"
|
create_simple_gnuplot_body "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs"
|
||||||
else
|
else
|
||||||
create_complex_gnuplot_body "$bench" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile"
|
create_complex_gnuplot_body "$bench" "$ylabel" "$lineNum" "$datFile" "$patternPlotFile" "$numCacheConfigs"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
create_gnuplot_file ()
|
create_gnuplot_file ()
|
||||||
{
|
{
|
||||||
local prod bench metrique ylabel yscale avg lineNum -
|
local prod bench metrique ylabel yscale avg lineNum numCacheConfigs -
|
||||||
prod="$1"
|
prod="$1"
|
||||||
bench="$2"
|
bench="$2"
|
||||||
metrique="$3"
|
metrique="$3"
|
||||||
baseYlabel="$4"
|
baseYlabel="$4"
|
||||||
|
numCacheConfigs="$5"
|
||||||
|
|
||||||
for yscale in "nologscale" "logscale"
|
for yscale in "nologscale" "logscale"
|
||||||
do
|
do
|
||||||
|
@ -384,7 +401,7 @@ create_gnuplot_file ()
|
||||||
if [ $yscale != "logscale" ] || ! contains_zero "$prod" "$bench" "$datFile" "$lineNum"
|
if [ $yscale != "logscale" ] || ! contains_zero "$prod" "$bench" "$datFile" "$lineNum"
|
||||||
then
|
then
|
||||||
create_gnuplot_header "$prod" "$bench" "$patternPlotFile.gnuplot"
|
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
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
@ -418,16 +435,17 @@ main()
|
||||||
metriquePattern="[[:digit:]]+ +cycles "
|
metriquePattern="[[:digit:]]+ +cycles "
|
||||||
ylabel="Nb cycles" ;;
|
ylabel="Nb cycles" ;;
|
||||||
total_time)
|
total_time)
|
||||||
metriquePattern="[[:digit:].]+ +seconds time elapsed "
|
metriquePattern="[[:digit:].,]+ +seconds time elapsed "
|
||||||
ylabel="Secondes" ;;
|
ylabel="Secondes" ;;
|
||||||
*)
|
*)
|
||||||
echo "Pas de pattern pour cette métrique : $metrique"
|
echo "Pas de pattern pour cette métrique : $metrique"
|
||||||
echo "Pas de label pour cette métrique : $metrique"
|
echo "Pas de label pour cette métrique : $metrique"
|
||||||
exit 1 ;;
|
exit 1 ;;
|
||||||
esac
|
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_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
|
done
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue