diff options
Diffstat (limited to 'parse')
-rw-r--r-- | parse/ft.py | 2 | ||||
-rw-r--r-- | parse/sched.py | 13 | ||||
-rw-r--r-- | parse/tuple_table.py | 10 |
3 files changed, 16 insertions, 9 deletions
diff --git a/parse/ft.py b/parse/ft.py index feb338f..4e310b0 100644 --- a/parse/ft.py +++ b/parse/ft.py | |||
@@ -20,7 +20,6 @@ def get_ft_output(data_dir, out_dir, force=False): | |||
20 | if force: | 20 | if force: |
21 | os.remove(output_file) | 21 | os.remove(output_file) |
22 | else: | 22 | else: |
23 | print("ft-output already exists for %s" % data_dir) | ||
24 | return output_file | 23 | return output_file |
25 | 24 | ||
26 | if len(bins) != 0: | 25 | if len(bins) != 0: |
@@ -41,7 +40,6 @@ def get_ft_output(data_dir, out_dir, force=False): | |||
41 | # Analyze will summarize those | 40 | # Analyze will summarize those |
42 | # todo pass in f | 41 | # todo pass in f |
43 | cmd_arr = [conf.BINS['analyze']] | 42 | cmd_arr = [conf.BINS['analyze']] |
44 | print("cmd arr: %s-%s" % (cmd_arr, bins)) | ||
45 | cmd_arr.extend(bins) | 43 | cmd_arr.extend(bins) |
46 | with open(output_file, "w") as f: | 44 | with open(output_file, "w") as f: |
47 | subprocess.call(cmd_arr, cwd=out_dir, stdout=f, stderr=err_file) | 45 | subprocess.call(cmd_arr, cwd=out_dir, stdout=f, stderr=err_file) |
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 | |||
11 | import re | 11 | import re |
12 | import numpy as np | 12 | import numpy as np |
13 | import subprocess | 13 | import subprocess |
14 | import pprint | ||
14 | 15 | ||
15 | from collections import namedtuple,defaultdict | 16 | from collections import namedtuple,defaultdict |
16 | from operator import methodcaller | 17 | from 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 | ||
diff --git a/parse/tuple_table.py b/parse/tuple_table.py index 465abb3..e5dc39b 100644 --- a/parse/tuple_table.py +++ b/parse/tuple_table.py | |||
@@ -21,7 +21,6 @@ class ColMap(object): | |||
21 | key += (None,) | 21 | key += (None,) |
22 | else: | 22 | else: |
23 | key += (kv[col],) | 23 | key += (kv[col],) |
24 | |||
25 | return key | 24 | return key |
26 | 25 | ||
27 | def __contains__(self, col): | 26 | def __contains__(self, col): |
@@ -43,6 +42,15 @@ class ColMap(object): | |||
43 | self.value_map[column] = value | 42 | self.value_map[column] = value |
44 | elif value != self.value_map[column]: | 43 | elif value != self.value_map[column]: |
45 | self.force_add(column) | 44 | self.force_add(column) |
45 | del(self.value_map[column]) | ||
46 | |||
47 | def try_remove(self, column): | ||
48 | if column in self.rev_map: | ||
49 | idx = self.rev_map[column] | ||
50 | for value in self.col_list[idx+1:]: | ||
51 | self.rev_map[value] -= 1 | ||
52 | del(self.col_list[self.rev_map[column]]) | ||
53 | del(self.rev_map[column]) | ||
46 | 54 | ||
47 | def __str__(self): | 55 | def __str__(self): |
48 | return "<ColMap>%s" % (self.rev_map) | 56 | return "<ColMap>%s" % (self.rev_map) |