source: icGREP/icgrep-devel/performance/datgenavx2.py @ 5343

Last change on this file since 5343 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: 4.4 KB
Line 
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("avxoutput.csv", "rb"))):
14                incsv.append(row)
15except TypeError:
16        readFile = open("avxoutput.csv")
17        lines = readFile.readlines()
18        readFile.close()
19        w = open("avxoutput.csv",'w')
20        w.writelines([item for item in lines[:-1]])
21        w.close()
22        for row in map(InputRow._make, csv.reader(open("avxoutput.csv", "rb"))):
23                incsv.append(row)
24
25
26Datfile = namedtuple('Datfile', ['file','program1','program2','program3','program4','stat1','stat2','stat3','stat4','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
47cpms=3200000
48
49chart3=[]
50chart3.append(Datfile('../../../docs/Working/re/data/avxipc1.dat','bitstreams_avx2','bitstreams_avx2','bitstreams','bitstreams','instructions:u','cycles:u','instructions:u','cycles:u',False,(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(chart3)
52
53#chart4=[]
54#chart4.append(Datfile('../../../docs/Working/re/data/avxbranch-misses.dat','bitstreams_avx2','bitstreams_avx2','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),)),)))
55#chart4.append(Datfile('../../../docs/Working/re/data/ssebranch-misses.dat','bitstreams','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),)),)))
56#charts.append(chart4)
57
58
59
60for chart in charts:
61        chartmin=10000000
62        for datfile in chart:
63                for datrow in datfile.rows:
64                        value1=1
65                        valuecount1=0
66                        value2=1
67                        valuecount2=0
68                        for row in incsv:
69                                for fileexpression in datrow.fileexpressions:
70                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and ((row.program==datfile.program1 and row.stat==datfile.stat1) or (row.program==datfile.program4 and row.stat==datfile.stat4)):
71                                                value1=value1*float(row.value)
72                                                valuecount1=valuecount1+1
73                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and ((row.program==datfile.program2 and row.stat==datfile.stat2) or (row.program==datfile.program3 and row.stat==datfile.stat3)):
74                                                value2=value2*float(row.value)
75                                                valuecount2=valuecount2+1
76                        print value1
77                        print value2
78                        if valuecount1>0:
79                                value1 = value1/valuecount1
80                        if valuecount2>0:
81                                value2 = value2/valuecount2
82                        if value2>0:
83                                value = value1/value2
84                        else:
85                                value = value1
86                        if value<chartmin:
87                                chartmin=value
88        for datfile in chart:
89                f = open(datfile.file, 'w')
90                for datrow in datfile.rows:
91                        value1=1
92                        valuecount1=0
93                        value2=1
94                        valuecount2=0
95                        for row in incsv:
96                                for fileexpression in datrow.fileexpressions:
97                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and ((row.program==datfile.program1 and row.stat==datfile.stat1) or (row.program==datfile.program4 and row.stat==datfile.stat4)):
98                                                value1=value1*float(row.value)
99                                                valuecount1=valuecount1+1
100                                        if row.expression==fileexpression.expression and row.file == fileexpression.file and ((row.program==datfile.program2 and row.stat==datfile.stat2) or (row.program==datfile.program3 and row.stat==datfile.stat3)):
101                                                value2=value2*float(row.value)
102                                                valuecount2=valuecount2+1
103
104                        if valuecount1>0:
105                                value1 = value1/valuecount1
106                        if valuecount2>0:
107                                value2 = value2/valuecount2
108                        if value2>0:
109                                value = value1/value2
110                        else:
111                                value = value1
112                        if False:#value>chartmin*10:
113                                value=chartmin*10
114                        f.write(datrow.number)
115                        f.write(' ')
116                        f.write(str(value))
117                        f.write('\n')
118                f.close()
Note: See TracBrowser for help on using the repository browser.