summaryrefslogtreecommitdiffstats
path: root/dis
diff options
context:
space:
mode:
Diffstat (limited to 'dis')
-rwxr-xr-xdis/clean.sh7
-rwxr-xr-xdis/postproc.sh17
-rwxr-xr-xdis/summarize.py36
3 files changed, 39 insertions, 21 deletions
diff --git a/dis/clean.sh b/dis/clean.sh
index 7c58295..1b6d2f5 100755
--- a/dis/clean.sh
+++ b/dis/clean.sh
@@ -1 +1,6 @@
1tail -n +2 $1 | tr "-" " " | sed "s/L3:0=0000;1=0000;2=0000;3=0000/0/" | sed "s/L3:0=0000;1=0000;2=0000;3=0001/1/" | sed "s/L3:0=0000;1=0000;2=0000;3=0003/2/" | sed "s/L3:0=0000;1=0000;2=0000;3=0007/3/" | sed "s/L3:0=0000;1=0000;2=0000;3=000f/4/" | sed "s/L3:0=0000;1=0000;2=0000;3=003f/6/" | sed "s/L3:0=0000;1=0000;2=0000;3=00ff/8/" | sed "s/L3:0=0000;1=0000;2=0000;3=03ff/10/" | sed "s/L3:0=0000;1=0000;2=0000;3=0fff/12/" | sed "s/L3:0=0000;1=0000;2=0000;3=3fff/14/" | sed "s/L3:0=0000;1=0000;2=0000;3=ffff/16/" > $1.clean 1#!/bin/bash
2# Input: Output of ./summarize.py
3# This script primarially converts an LLC assignment mask to a decimal number
4# of assigned cache ways. It also removes the first line (column headers) and the
5# last three lines (summary statistics)
6tail -n +2 $1 | head -n -3 | tr "-" " " | tr "+" " " | sed "s/L3:0=0000;1=0000;2=0000;3=0000/0/g" | sed "s/L3:0=0000;1=0000;2=0000;3=0001/1/g" | sed "s/L3:0=0000;1=0000;2=0000;3=0003/2/g" | sed "s/L3:0=0000;1=0000;2=0000;3=0007/3/g" | sed "s/L3:0=0000;1=0000;2=0000;3=000f/4/g" | sed "s/L3:0=0000;1=0000;2=0000;3=001f/5/g" | sed "s/L3:0=0000;1=0000;2=0000;3=003f/6/g" | sed "s/L3:0=0000;1=0000;2=0000;3=007f/7/g" | sed "s/L3:0=0000;1=0000;2=0000;3=00ff/8/g" | sed "s/L3:0=0000;1=0000;2=0000;3=01ff/9/g" | sed "s/L3:0=0000;1=0000;2=0000;3=03ff/10/g" | sed "s/L3:0=0000;1=0000;2=0000;3=07ff/11/g" | sed "s/L3:0=0000;1=0000;2=0000;3=0fff/12/g" | sed "s/L3:0=0000;1=0000;2=0000;3=1fff/13/g" | sed "s/L3:0=0000;1=0000;2=0000;3=3fff/14/g" | sed "s/L3:0=0000;1=0000;2=0000;3=7fff/15/g" | sed "s/L3:0=0000;1=0000;2=0000;3=ffff/16/g" > $1.clean
diff --git a/dis/postproc.sh b/dis/postproc.sh
index c5dd1c9..efe6774 100755
--- a/dis/postproc.sh
+++ b/dis/postproc.sh
@@ -1,3 +1,18 @@
1#!/bin/bash 1#!/bin/bash
2./summarize.py $1.txt > $1-pp.txt 2# This takes the saved output from the timing code in `extra.h`, summarizes
3# it, and converts LLC masks to decimals.
4# This is compatible with the output of all the current DIS runner scripts.
5if echo $1 | grep -q ".txt"; then
6 echo "Don't include .txt! Exiting..."
7 exit
8fi
9if echo $1 | grep -q "\-pp"; then
10 echo "Don't include -pp! Exiting..."
11 exit
12fi
13if [[ ! -f $1.txt ]]; then
14 echo "Input does not exist. Exiting..."
15 exit
16fi
17./summarize.py $1.txt --inf-precision > $1-pp.txt
3./clean.sh $1-pp.txt 18./clean.sh $1-pp.txt
diff --git a/dis/summarize.py b/dis/summarize.py
index f8f6929..31dcccc 100755
--- a/dis/summarize.py
+++ b/dis/summarize.py
@@ -2,6 +2,8 @@
2import sys 2import sys
3 3
4f = sys.argv[1] 4f = sys.argv[1]
5if len(sys.argv) < 2:
6 print("Usage "+sys.argv[0]+" <filename> --inf-precision")
5res = {} 7res = {}
6mem_res = {} 8mem_res = {}
7memw_res = {} 9memw_res = {}
@@ -48,24 +50,20 @@ def percentile(N, percent, key=lambda x:x):
48 d1 = key(N[int(c)]) * (k-f) 50 d1 = key(N[int(c)]) * (k-f)
49 return d0+d1 51 return d0+d1
50## end of http://code.activestate.com/recipes/511478/ }}} 52## end of http://code.activestate.com/recipes/511478/ }}}
51""" 53avg_max = 0
52print("Average times:") 54avg_99th = 0
53for r in res.keys(): 55avg_avg = 0
54 print(res[r]/samples[r])
55
56print("Average memory read:")
57for r in mem_res.keys():
58 print(mem_res[r]/samples[r])
59
60print("Average memory write:")
61for r in memw_res.keys():
62 print(memw_res[r]/samples[r])
63
64print("Max times:")
65for r in max_res.keys():
66 print(max_res[r])
67"""
68print("Name\t\tAverage\t\tMax\t\t99th %\t\tAvg Mem Read\tAvg Mem Write\t") 56print("Name\t\tAverage\t\tMax\t\t99th %\t\tAvg Mem Read\tAvg Mem Write\t")
69for r in res.keys(): 57for r in sorted(res.keys()):
70# print(r + "\t\t" + str(res[r]/samples[r]) + "\t\t" + str(max_res[r])) 58# print(r + "\t\t" + str(res[r]/samples[r]) + "\t\t" + str(max_res[r]))
71 print("{:12}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}".format(r, sum(res[r])/len(res[r]), max(res[r]), percentile(sorted(res[r]), 0.99), mem_res[r]/samples[r], memw_res[r]/samples[r])) 59 avg_avg += sum(res[r])/len(res[r])
60 avg_max += max(res[r])
61 avg_99th += percentile(sorted(res[r]), 0.99)
62 if len(sys.argv) > 2 and sys.argv[2] == "--inf-precision":
63 print("{:12}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}".format(r, sum(res[r])/len(res[r]), max(res[r]), percentile(sorted(res[r]), 0.99), mem_res[r]/samples[r], memw_res[r]/samples[r]))
64 else:
65 print("{:12.12}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}".format(r, sum(res[r])/len(res[r]), max(res[r]), percentile(sorted(res[r]), 0.99), mem_res[r]/samples[r], memw_res[r]/samples[r]))
66
67print("Average average:", avg_avg/len(res.keys()))
68print("Average max:", avg_max/len(res.keys()))
69print("Average 99th:", avg_99th/len(res.keys()))