aboutsummaryrefslogtreecommitdiffstats
path: root/parse/sched.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-10-30 16:04:23 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2012-10-30 16:04:23 -0400
commit53cfcf10531256d0e4411a7e0bda431ec27f28e7 (patch)
treed9119ebe9658f4f41ab870811b6a89f6e9683cbc /parse/sched.py
parent2e804f8fa7d26755088e47357f8de6feb6dbe292 (diff)
Process all non-scaling statistics for base experiments.
Diffstat (limited to 'parse/sched.py')
-rw-r--r--parse/sched.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/parse/sched.py b/parse/sched.py
index 80764b6..bbf6e10 100644
--- a/parse/sched.py
+++ b/parse/sched.py
@@ -11,6 +11,7 @@ import os
11import re 11import re
12import numpy as np 12import numpy as np
13import subprocess 13import subprocess
14import pprint
14 15
15from collections import namedtuple,defaultdict 16from collections import namedtuple,defaultdict
16from operator import methodcaller 17from operator import methodcaller
@@ -54,6 +55,7 @@ class LeveledArray(object):
54 def add(self, task, value): 55 def add(self, task, value):
55 self.vals[task.config.level] += [value] 56 self.vals[task.config.level] += [value]
56 57
58
57 def write_measurements(self, result): 59 def write_measurements(self, result):
58 for level, arr in self.vals.iteritems(): 60 for level, arr in self.vals.iteritems():
59 name = "%s%s" % ("%s-" % level if level else "", self.name) 61 name = "%s%s" % ("%s-" % level if level else "", self.name)
@@ -72,7 +74,6 @@ def get_st_output(data_dir, out_dir, force=False):
72 if force: 74 if force:
73 os.remove(output_file) 75 os.remove(output_file)
74 else: 76 else:
75 print("st-output already exists for %s" % data_dir)
76 return output_file 77 return output_file
77 78
78 if len(bins) != 0: 79 if len(bins) != 0:
@@ -195,8 +196,11 @@ def extract_variance(task_dict, data, exp_point):
195 completions[pid] += [duration] 196 completions[pid] += [duration]
196 197
197 for pid, durations in completions.iteritems(): 198 for pid, durations in completions.iteritems():
199 m = Measurement(pid).from_array(durations)
200
198 # TODO: not this, please 201 # TODO: not this, please
199 task_dict[pid].run.append(Measurement(pid).from_array(durations)) 202 if not task_dict[pid].run:
203 task_dict[pid].run.append(m)
200 204
201 job_times = np.array(durations) 205 job_times = np.array(durations)
202 mean = job_times.mean() 206 mean = job_times.mean()
@@ -210,6 +214,7 @@ def extract_variance(task_dict, data, exp_point):
210 corrected = (1 + 1/(4 * len(job_times))) * cv 214 corrected = (1 + 1/(4 * len(job_times))) * cv
211 215
212 varz.add(task_dict[pid], corrected) 216 varz.add(task_dict[pid], corrected)
217 # varz.add(task_dict[pid], m[Type.Var])
213 218
214 if exp_point: 219 if exp_point:
215 map(methodcaller('write_measurements', exp_point), 220 map(methodcaller('write_measurements', exp_point),
@@ -272,17 +277,13 @@ def extract_scaling_data(task_dict, data, result, base_file):
272 for data_stat, base_stat in zip(data_stats[config],base_stats[config]): 277 for data_stat, base_stat in zip(data_stats[config],base_stats[config]):
273 if not base_stat[Type.Avg] or not base_stat[Type.Max] or \ 278 if not base_stat[Type.Avg] or not base_stat[Type.Max] or \
274 not data_stat[Type.Avg] or not data_stat[Type.Max]: 279 not data_stat[Type.Avg] or not data_stat[Type.Max]:
275 print("missing a thing: {},{}".format(base_stat, data_stat))
276 continue 280 continue
277 # How much larger is their exec stat than ours? 281 # How much larger is their exec stat than ours?
278 print("%s vs %s" % (base_stat, data_stat))
279 avg_scale = float(base_stat[Type.Avg]) / float(data_stat[Type.Avg]) 282 avg_scale = float(base_stat[Type.Avg]) / float(data_stat[Type.Avg])
280 max_scale = float(base_stat[Type.Max]) / float(data_stat[Type.Max]) 283 max_scale = float(base_stat[Type.Max]) / float(data_stat[Type.Max])
281 284
282 task = task_dict[data_stat.id] 285 task = task_dict[data_stat.id]
283 286
284 print("scaling for %s" % data_stat.id)
285
286 avg_scales.add(task, avg_scale) 287 avg_scales.add(task, avg_scale)
287 max_scales.add(task, max_scale) 288 max_scales.add(task, max_scale)
288 289