source: icGREP/icgrep-devel/performance/datgen.py @ 4126

Last change on this file since 4126 was 4126, checked in by linmengl, 5 years ago

initial checkin of performance script; based on Ben's script, will do correctness check first and record performance data in json format. A python script will be developed to visualize performance difference.

File size: 7.5 KB
RevLine 
[4126]1from subprocess import call, Popen
2from collections import *
3import csv
4import StringIO
5import os.path
6import sys
7import shutil
8
9InputRow = namedtuple('InputRow', ['file','expression','program','stat','value','value2','value3','value4'])
10
11incsv = []
12try:
13        for row in map(InputRow._make, csv.reader(open("output.csv", "rb"))):
14                incsv.append(row)
15except TypeError:
16        readFile = open("output.csv")
17        lines = readFile.readlines()
18        readFile.close()
19        w = open("output.csv",'w')
20        w.writelines([item for item in lines[:-1]])
21        w.close()
22        for row in map(InputRow._make, csv.reader(open("output.csv", "rb"))):
23                incsv.append(row)
24
25
26Datfile = namedtuple('Datfile', ['file','program','stat1','stat2','perbyte','rows'])
27Datrow = namedtuple('Datrow', ['number','fileexpressions'])
28FileExpression=namedtuple('FileExpression', ['file','expression','filesize'])
29
30charts = []
31file1='howto'
32exp1='at'
33size1=39422105
34file2='howto'
35exp2='Date'
36size2=39422105
37file3='howto'
38exp3='Email'
39size3=39422105
40file4='howto'
41exp4='URIorEmail'
42size4=39422105
43file5='roads'
44exp5='xquote'
45size5=11861751
46
47chart1=[]
48chart1.append(Datfile('../../../docs/Working/re/data/cycles1.dat','bitstreams','cycles:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
49chart1.append(Datfile('../../../docs/Working/re/data/cycles2.dat','nrgrep112','cycles:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
50chart1.append(Datfile('../../../docs/Working/re/data/cycles3.dat','grep','cycles:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
51charts.append(chart1)
52
53chart2=[]
54chart2.append(Datfile('../../../docs/Working/re/data/instructions1.dat','bitstreams','instructions:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
55chart2.append(Datfile('../../../docs/Working/re/data/instructions2.dat','nrgrep112','instructions:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
56chart2.append(Datfile('../../../docs/Working/re/data/instructions3.dat','grep','instructions:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
57charts.append(chart2)
58
59chart3=[]
60chart3.append(Datfile('../../../docs/Working/re/data/ipc1.dat','bitstreams','instructions:u','cycles:u',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
61chart3.append(Datfile('../../../docs/Working/re/data/ipc2.dat','nrgrep112','instructions:u','cycles:u',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
62chart3.append(Datfile('../../../docs/Working/re/data/ipc3.dat','grep','instructions:u','cycles:u',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
63charts.append(chart3)
64
65chart4=[]
66chart4.append(Datfile('../../../docs/Working/re/data/branch-misses1.dat','bitstreams','branch-misses:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
67chart4.append(Datfile('../../../docs/Working/re/data/branch-misses2.dat','nrgrep112','branch-misses:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
68chart4.append(Datfile('../../../docs/Working/re/data/branch-misses3.dat','grep','branch-misses:u','',True,(Datrow('0',(FileExpression(file1,exp1,size1),)),Datrow('1',(FileExpression(file2,exp2,size2),)),Datrow('2',(FileExpression(file3,exp3,size3),)),Datrow('3',(FileExpression(file4,exp4,size4),)),Datrow('4',(FileExpression(file5,exp5,size5),)),)))
69charts.append(chart4)
70
71
72for chart in charts:
73        chartmin=10000000
74        for datfile in chart:
75                for datrow in datfile.rows:
76                        value1=0
77                        valuecount1=0
78                        value2=0
79                        valuecount2=0
80                        for row in incsv:
81                                for fileexpression in datrow.fileexpressions:
82                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and row.program==datfile.program and row.stat==datfile.stat1:
83                                                if datfile.perbyte:
84                                                        value1=value1+(float(row.value)/fileexpression.filesize)
85                                                else:
86                                                        value1=value1+int(row.value)
87                                                valuecount1=valuecount1+1
88                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and row.program==datfile.program and row.stat==datfile.stat2:
89                                                if datfile.perbyte:
90                                                        value2=value2+(float(row.value)/fileexpression.filesize)
91                                                else:
92                                                        value2=value2+int(row.value)                                           
93                                                valuecount2=valuecount2+1
94                        print value1
95                        print value2
96                        if valuecount1>0:
97                                value1 = value1/valuecount1
98                        if valuecount2>0:
99                                value2 = value2/valuecount2
100                        if value2>0:
101                                value = value1/value2
102                        else:
103                                value = value1
104                        if value<chartmin:
105                                chartmin=value
106        for datfile in chart:
107                f = open(datfile.file, 'w')
108                for datrow in datfile.rows:
109                        value1=0
110                        valuecount1=0
111                        value2=0
112                        valuecount2=0
113                        for row in incsv:
114                                for fileexpression in datrow.fileexpressions:
115                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and row.program==datfile.program and row.stat==datfile.stat1:
116                                                if datfile.perbyte:
117                                                        value1=value1+(float(row.value)/fileexpression.filesize)
118                                                else:
119                                                        value1=value1+int(row.value)
120                                                valuecount1=valuecount1+1
121                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and row.program==datfile.program and row.stat==datfile.stat2:
122                                                if datfile.perbyte:
123                                                        value2=value2+(float(row.value)/fileexpression.filesize)
124                                                else:
125                                                        value2=value2+int(row.value)                                           
126                                                valuecount2=valuecount2+1
127                        print value1
128                        print value2
129                        if valuecount1>0:
130                                value1 = value1/valuecount1
131                        if valuecount2>0:
132                                value2 = value2/valuecount2
133                        if value2>0:
134                                value = value1/value2
135                        else:
136                                value = value1
137                        if False:#value>chartmin*10:
138                                value=chartmin*10
139                        f.write(datrow.number)
140                        f.write(' ')
141                        f.write(str(value))
142                        f.write('\n')
143                f.close()
Note: See TracBrowser for help on using the repository browser.