From 34ccf7305d44fd64b0ecbe1e28b62b4313e2a62a Mon Sep 17 00:00:00 2001 From: Angela Jiang Date: Tue, 22 May 2018 21:28:03 -0700 Subject: [PATCH 1/2] Use mode to generate num frozen options --- src/scheduler/types/Scheduler.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/scheduler/types/Scheduler.py b/src/scheduler/types/Scheduler.py index 5545bd0..f0ad3d7 100644 --- a/src/scheduler/types/Scheduler.py +++ b/src/scheduler/types/Scheduler.py @@ -315,7 +315,7 @@ def hifi_scheduler(self, cost_threshold, mode, dp={}): dp_prev = dict(dp) dp = {} - def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold): + def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold, mode): # curr/best_by_budget: [(benefit, min_cost), (benefit_lower, min_cost_lower)] vals = [] for prev_goodness, prev_budget, info in reversed(best_by_budget): @@ -361,7 +361,7 @@ def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold): for stem, best_by_budget in dp_prev_only.iteritems(): new_stem = stem.relax(c_frozen, c_fps) assert new_stem.cost >= stem.cost - result = relax2(dp.get(new_stem, []), best_by_budget, c_cost, c_benefit, c_unit, cost_threshold - new_stem.cost) + result = relax2(dp.get(new_stem, []), best_by_budget, c_cost, c_benefit, c_unit, cost_threshold - new_stem.cost, mode) if len(result) > 0: dp[new_stem] = result @@ -418,12 +418,12 @@ def bucket_stats(vals): avg_metric = self.set_schedule_values(best_schedule) return avg_metric - def best_sol_for_stem(self, stem, cost_benefits, cost_threshold, target_fps_options): + def best_sol_for_stem(self, stem, cost_benefits, cost_threshold, target_fps_options, mode): func_init, agg_func = self.func_init, self.agg_func dp = {} ops, updates = 0, 0 for i, app in enumerate(self.apps): - num_frozen_options = sorted(app["accuracies"].keys()) + num_frozen_options = self._get_num_frozen_options(app, mode) stem_ptr = 0 min_objective_by_budget = [] if i > 0: @@ -518,7 +518,7 @@ def stems_scheduler(self, cost_threshold, mode): if stem.cost > cost_threshold: continue num_stems_in_budget += 1 - best_stem_sol, (ops_, updates_) = self.best_sol_for_stem(stem, cost_benefits, cost_threshold, target_fps_options) + best_stem_sol, (ops_, updates_) = self.best_sol_for_stem(stem, cost_benefits, cost_threshold, target_fps_options, mode) ops += ops_ updates += updates_ if scheduler_util.sol_better(best_result, best_stem_sol): From a8e35a0a84d8e66e5c37ced7eb2984ca0e676358 Mon Sep 17 00:00:00 2001 From: Angela Jiang Date: Tue, 22 May 2018 22:04:47 -0700 Subject: [PATCH 2/2] Revert unecessary fix --- src/scheduler/types/Scheduler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scheduler/types/Scheduler.py b/src/scheduler/types/Scheduler.py index f0ad3d7..76fe80a 100644 --- a/src/scheduler/types/Scheduler.py +++ b/src/scheduler/types/Scheduler.py @@ -315,7 +315,7 @@ def hifi_scheduler(self, cost_threshold, mode, dp={}): dp_prev = dict(dp) dp = {} - def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold, mode): + def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold): # curr/best_by_budget: [(benefit, min_cost), (benefit_lower, min_cost_lower)] vals = [] for prev_goodness, prev_budget, info in reversed(best_by_budget): @@ -361,7 +361,7 @@ def relax2(curr, best_by_budget, curr_cost, curr_goodness, c_unit, threshold, mo for stem, best_by_budget in dp_prev_only.iteritems(): new_stem = stem.relax(c_frozen, c_fps) assert new_stem.cost >= stem.cost - result = relax2(dp.get(new_stem, []), best_by_budget, c_cost, c_benefit, c_unit, cost_threshold - new_stem.cost, mode) + result = relax2(dp.get(new_stem, []), best_by_budget, c_cost, c_benefit, c_unit, cost_threshold - new_stem.cost) if len(result) > 0: dp[new_stem] = result