From e747f97dceb1ba23d45217f660cf508a06fe0e0c Mon Sep 17 00:00:00 2001 From: Rose Thompson Date: Sun, 26 Nov 2023 17:30:11 -0600 Subject: [PATCH] Fixed repeatability issues with the branch predictor simulator results generation. I reran using a clean clone of the repo so this should be working now. --- bin/CModelBTBAccuracy.sh | 8 ++++---- bin/CModelBranchAccuracy.sh | 2 +- bin/parseHPMC.py | 13 +++++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/bin/CModelBTBAccuracy.sh b/bin/CModelBTBAccuracy.sh index e4a26fb85..479340eb2 100755 --- a/bin/CModelBTBAccuracy.sh +++ b/bin/CModelBTBAccuracy.sh @@ -40,18 +40,18 @@ do lines=`sim_bp gshare 16 16 $Size 1 $File | tail -5` Total=`echo "$lines" | head -1 | awk '{print $5}'` Miss=`echo "$lines" | tail -2 | head -1 | awk '{print $8}'` - BMDR=`echo "$Miss / $Total" | bc -l` + BMDR=`echo "100.0 * $Miss / $Total" | bc -l` BMDRArray+=("$BMDR") if [ $Miss -eq 0 ]; then - Product=`echo "scale=200; $Product / $Total" | bc -l` + Product=`echo "scale=200; $Product * 100 / $Total" | bc -l` else - Product=`echo "scale=200; $Product * $Miss / $Total" | bc -l` + Product=`echo "scale=200; $Product * $BMDR" | bc -l` fi Count=$((Count+1)) done # with such long precision bc outputs onto multiple lines # must remove \n and \ from string Product=`echo "$Product" | tr -d '\n' | tr -d '\\\'` - GeoMean=`perl -E "say $Product**(1/$Count) * 100"` + GeoMean=`perl -E "say $Product**(1/$Count)"` echo "$Pred$Size $GeoMean" done diff --git a/bin/CModelBranchAccuracy.sh b/bin/CModelBranchAccuracy.sh index 1b94f7c9a..8253891bb 100755 --- a/bin/CModelBranchAccuracy.sh +++ b/bin/CModelBranchAccuracy.sh @@ -46,7 +46,7 @@ do do #echo "sim_bp $Pred $Size $Size 18 1 $File | tail -1 | awk '{print $4}'" #echo "sim_bp $Pred $SizeString $File | tail -1 | awk '{print $4}'" - BMDR=`sim_bp $Pred $SizeString $File | tail -1 | awk '{print $4}'` + BMDR=`sim_bp -c $Pred $SizeString $File | tail -1 | awk '{print $4}'` Product=`echo "$Product * $BMDR" | bc` Count=$((Count+1)) done diff --git a/bin/parseHPMC.py b/bin/parseHPMC.py index a11296b3e..f9a961c18 100755 --- a/bin/parseHPMC.py +++ b/bin/parseHPMC.py @@ -32,12 +32,13 @@ import math import numpy as np import argparse -RefDataBP = [('twobitCModel6', 'twobitCModel', 64, 9.65280765420711), ('twobitCModel8', 'twobitCModel', 256, 8.75120245829945), ('twobitCModel10', 'twobitCModel', 1024, 8.1318382397263), - ('twobitCModel12', 'twobitCModel', 4096, 7.53026646633342), ('twobitCModel14', 'twobitCModel', 16384, 6.07679338544009), ('twobitCModel16', 'twobitCModel', 65536, 6.07679338544009), - ('gshareCModel6', 'gshareCModel', 64, 10.6602835418646), ('gshareCModel8', 'gshareCModel', 256, 8.38384710559667), ('gshareCModel10', 'gshareCModel', 1024, 6.36847432155534), - ('gshareCModel12', 'gshareCModel', 4096, 3.91108491151983), ('gshareCModel14', 'gshareCModel', 16384, 2.83926519215395), ('gshareCModel16', 'gshareCModel', 65536, .60213659066941)] -RefDataBTB = [('BTBCModel6', 'BTBCModel', 64, 1.11806778745097), ('BTBCModel8', 'BTBCModel', 256, 0.183833943219956), ('BTBCModel10', 'BTBCModel', 1024, 0.0109271020749376), - ('BTBCModel12', 'BTBCModel', 4096, 0.00437600802791213), ('BTBCModel14', 'BTBCModel', 16384, 0.00188756234204305), ('BTBCModel16', 'BTBCModel', 65536, 0.00188756234204305)] + +RefDataBP = [('twobitCModel6', 'twobitCModel', 64, 10.0060297551637), ('twobitCModel8', 'twobitCModel', 256, 8.4320392215602), ('twobitCModel10', 'twobitCModel', 1024, 7.29493318805151), + ('twobitCModel12', 'twobitCModel', 4096, 6.84739616147794), ('twobitCModel14', 'twobitCModel', 16384, 5.68432926870082), ('twobitCModel16', 'twobitCModel', 65536, 5.68432926870082), + ('gshareCModel6', 'gshareCModel', 64, 11.4737703417701), ('gshareCModel8', 'gshareCModel', 256, 8.52341470761974), ('gshareCModel10', 'gshareCModel', 1024, 6.32975690693015), + ('gshareCModel12', 'gshareCModel', 4096, 4.55424632377659), ('gshareCModel14', 'gshareCModel', 16384, 3.54251547725509), ('gshareCModel16', 'gshareCModel', 65536, 1.90424999467293)] +RefDataBTB = [('BTBCModel6', 'BTBCModel', 64, 1.51480272475844), ('BTBCModel8', 'BTBCModel', 256, 0.209057900418965), ('BTBCModel10', 'BTBCModel', 1024, 0.0117345454469572), + ('BTBCModel12', 'BTBCModel', 4096, 0.00125540990359826), ('BTBCModel14', 'BTBCModel', 16384, 0.000732471628510962), ('BTBCModel16', 'BTBCModel', 65536, 0.000732471628510962)] def ParseBranchListFile(path): '''Take the path to the list of Questa Sim log files containing the performance counters outputs. File