summaryrefslogtreecommitdiff
path: root/aerialvision/lexyacc.py
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
committerTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
commit11b308e7363e937966b035b4891db32b4eece3bf (patch)
tree50ca4c9ad6f163ac4acb2bf505e64dfebed66947 /aerialvision/lexyacc.py
parentbb820c116764d7a1b8e071137d32b74e7f34dd2f (diff)
integrating recent changes from fermi-test into fermi
(i'll use "fermi" for more disruptive changes to the pipeline model such as updating the MSHRs and getting rid of the warp tracker, ripping out DWF, etc...) [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7805]
Diffstat (limited to 'aerialvision/lexyacc.py')
-rw-r--r--aerialvision/lexyacc.py39
1 files changed, 23 insertions, 16 deletions
diff --git a/aerialvision/lexyacc.py b/aerialvision/lexyacc.py
index 3208737..c434619 100644
--- a/aerialvision/lexyacc.py
+++ b/aerialvision/lexyacc.py
@@ -58,6 +58,8 @@ sys.path.insert(0,"Lib/site-packages/ply-3.2/ply-3.2")
import ply.lex as lex
import ply.yacc as yacc
import gzip
+import gc
+
import variableclasses as vc
global skipCFLOGParsing
@@ -171,9 +173,9 @@ def parseMe(filename):
'globalSentWrites':vc.variable('gpgpunsentwrites', 1, 0, 'scalar'),
'globalProcessedWrites':vc.variable('gpgpunprocessedwrites', 1, 0, 'scalar'),
'averagemflatency' :vc.variable('', 1, 0, 'custom'),
- 'LDmemlatdist':vc.variable('', 3, 0, 'impVec'),
- 'STmemlatdist':vc.variable('', 3, 0, 'impVec'),
- 'WarpDivergenceBreakdown':vc.variable('', 3, 0, 'impVec'),
+ 'LDmemlatdist':vc.variable('', 3, 0, 'stackbar'),
+ 'STmemlatdist':vc.variable('', 3, 0, 'stackbar'),
+ 'WarpDivergenceBreakdown':vc.variable('', 3, 0, 'stackbar'),
'dram_writes_per_cycle':vc.variable('', 1, 0, 'scalar', float),
'dram_reads_per_cycle' :vc.variable('', 1, 0, 'scalar', float),
'gpu_stall_by_MSHRwb':vc.variable('', 1, 0, 'scalar'),
@@ -213,11 +215,6 @@ def parseMe(filename):
'''sentence : WORD NUMBERSEQUENCE'''
#print p[0], p[1],p[2]
num = p[2].split(" ")
- for x in list(num):
- try:
- float(x)
- except:
- num.remove(x)
lookup_input = p[1].lower()
if (lookup_input in stat_lookuptable):
@@ -244,7 +241,18 @@ def parseMe(filename):
stat.data.append(stat.datatype(x))
stat.data.append("NULL")
- elif (p[1].lower()[0:5] == 'cflog'):
+ elif (stat.type == 5):
+ stat.initSparseMatrix()
+ for entry in num:
+ row, value = entry.split(',')
+ row = stat.datatype(row)
+ value = stat.datatype(value)
+ stat.data[0].append(value)
+ stat.data[1].append(row)
+ stat.data[2].append(stat.sampleNum)
+ stat.sampleNum += 1
+
+ elif (lookup_input[0:5] == 'cflog'):
if (skipCFLOGParsing == 1):
return
count = 0
@@ -280,7 +288,7 @@ def parseMe(filename):
print("Syntax error at EOF")
yacc.yacc()
-
+
# detect for gzip'ed log file and gunzip on the fly
if (filename.endswith('.gz')):
file = gzip.open(filename, 'r')
@@ -289,16 +297,15 @@ def parseMe(filename):
while file:
line = file.readline()
if not line : break
- parts = line.split(":")
- if (len(parts) != 2):
+ nameNdata = line.split(":")
+ if (len(nameNdata) != 2):
print("Syntax error at '%s'" % line)
- parts[0] = parts[0].strip()
- parts[1] = parts[1].strip()
- parts = [' '] + parts
+ namePart = nameNdata[0].strip()
+ dataPart= nameNdata[1].strip()
+ parts = [' ', namePart, dataPart]
p_sentence(parts)
# yacc.parse(line[0:-1])
file.close()
-
return variables