aboutsummaryrefslogtreecommitdiffstats
path: root/parse_exps.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-02-08 16:20:01 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-02-08 16:20:01 -0500
commit7c647198fc40e72ef6ca23c2484bf49eba2079ee (patch)
tree270de30a1cd896382a0954b2d8f7994ca84f88b7 /parse_exps.py
parentd312e270ed5c2926c8651291a4026062213876f8 (diff)
Added translation from DirMap to ReducedTupleTable.
Diffstat (limited to 'parse_exps.py')
-rwxr-xr-xparse_exps.py42
1 files changed, 29 insertions, 13 deletions
diff --git a/parse_exps.py b/parse_exps.py
index 1bd3d48..c2376de 100755
--- a/parse_exps.py
+++ b/parse_exps.py
@@ -5,14 +5,16 @@ import config.config as conf
5import os 5import os
6import parse.ft as ft 6import parse.ft as ft
7import parse.sched as st 7import parse.sched as st
8import pickle
8import shutil as sh 9import shutil as sh
9import sys 10import sys
10 11
11from collections import namedtuple 12from collections import namedtuple
12from common import load_params 13from common import load_params
13from optparse import OptionParser 14from optparse import OptionParser
15from parse.dir_map import DirMap
14from parse.point import ExpPoint 16from parse.point import ExpPoint
15from parse.tuple_table import TupleTable 17from parse.tuple_table import TupleTable,ReducedTupleTable
16from parse.col_map import ColMapBuilder 18from parse.col_map import ColMapBuilder
17 19
18 20
@@ -83,6 +85,29 @@ def load_exps(exp_dirs, cm_builder, clean):
83 85
84 return exps 86 return exps
85 87
88def parse_exp(exp, force):
89 result_file = exp.work_dir + "/exp_point.pkl"
90 should_load = not force and os.path.exists(result_file)
91 mode = 'r' if should_load else 'w'
92
93 with open(result_file, mode + 'b') as f:
94 if should_load:
95 # No need to go through this work twice
96 result = pickle.load(f)
97 else:
98 result = ExpPoint(exp.path)
99 cycles = exp.params[conf.PARAMS['cycles']]
100
101 # Write overheads into result
102 ft.extract_ft_data(result, exp.path, exp.work_dir, cycles)
103
104 # Write scheduling statistics into result
105 st.extract_sched_data(result, exp.path, exp.work_dir)
106
107 pickle.dump(result, f)
108
109 return result
110
86def main(): 111def main():
87 opts, args = parse_args() 112 opts, args = parse_args()
88 113
@@ -102,28 +127,19 @@ def main():
102 127
103 sys.stderr.write("Parsing data...\n") 128 sys.stderr.write("Parsing data...\n")
104 for i,exp in enumerate(exps): 129 for i,exp in enumerate(exps):
105 result = ExpPoint(exp.path) 130 result = parse_exp(exp, opts.force)
106 cycles = exp.params[conf.PARAMS['cycles']]
107
108 # Write overheads into result
109 ft.extract_ft_data(result, exp.path, exp.work_dir, cycles)
110
111 # Write scheduling statistics into result
112 st.extract_sched_data(result, exp.path, exp.work_dir)
113
114 if opts.verbose: 131 if opts.verbose:
115 print(result) 132 print(result)
116 else: 133 else:
117 sys.stderr.write('\r {0:.2%}'.format(float(i)/len(exps))) 134 sys.stderr.write('\r {0:.2%}'.format(float(i)/len(exps)))
118 135 result_table[exp.params] += [result]
119 result_table.add_exp(exp.params, result)
120 136
121 sys.stderr.write('\n') 137 sys.stderr.write('\n')
122 138
123 if opts.force and os.path.exists(opts.out): 139 if opts.force and os.path.exists(opts.out):
124 sh.rmtree(opts.out) 140 sh.rmtree(opts.out)
125 141
126 result_table.reduce() 142 result_table = result_table.reduce()
127 143
128 sys.stderr.write("Writing result...\n") 144 sys.stderr.write("Writing result...\n")
129 if opts.write_map: 145 if opts.write_map: