提交 bdd4a802 authored 作者: Frederic's avatar Frederic

Correctly count the number of time clean up opt ran and refactoring

上级 5b13a73a
...@@ -2091,6 +2091,21 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -2091,6 +2091,21 @@ class EquilibriumOptimizer(NavigatorOptimizer):
time_opts.setdefault(opt, 0) time_opts.setdefault(opt, 0)
node_created.setdefault(opt, 0) node_created.setdefault(opt, 0)
def apply_cleanup(iter_cleanup_sub_profs):
for copt in self.cleanup_optimizers:
change_tracker.reset()
nb = change_tracker.nb_imported
t_opt = time.time()
sub_prof = copt.apply(fgraph)
time_opts[copt] += time.time() - t_opt
iter_cleanup_sub_profs[copt].append(sub_prof)
if change_tracker.changed:
process_count.setdefault(copt, 0)
process_count[copt] += 1
global_process_count[copt] += 1
changed = True
node_created[copt] += change_tracker.nb_imported - nb
while changed and not max_use_abort: while changed and not max_use_abort:
process_count = {} process_count = {}
t0 = time.time() t0 = time.time()
...@@ -2121,14 +2136,7 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -2121,14 +2136,7 @@ class EquilibriumOptimizer(NavigatorOptimizer):
# apply clean up as global opt can have done changes that # apply clean up as global opt can have done changes that
# request that # request that
for copt in self.cleanup_optimizers: apply_cleanup(iter_cleanup_sub_profs)
change_tracker.reset()
t_opt = time.time()
sub_prof = copt.apply(fgraph)
time_opts[copt] += time.time() - t_opt
iter_cleanup_sub_profs[copt] = [sub_prof]
if change_tracker.changed:
changed = True
# apply local optimizer # apply local optimizer
topo_t0 = time.time() topo_t0 = time.time()
...@@ -2170,11 +2178,7 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -2170,11 +2178,7 @@ class EquilibriumOptimizer(NavigatorOptimizer):
global_process_count[lopt] += 1 global_process_count[lopt] += 1
changed = True changed = True
node_created[lopt] += change_tracker.nb_imported - nb node_created[lopt] += change_tracker.nb_imported - nb
for copt in self.cleanup_optimizers: apply_cleanup(iter_cleanup_sub_profs)
t_opt = time.time()
sub_prof = copt.apply(fgraph)
time_opts[copt] += time.time() - t_opt
iter_cleanup_sub_profs[copt].append(sub_prof)
if global_process_count[lopt] > max_use: if global_process_count[lopt] > max_use:
max_use_abort = True max_use_abort = True
opt_name = (getattr(lopt, "name", None) or opt_name = (getattr(lopt, "name", None) or
...@@ -2210,12 +2214,7 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -2210,12 +2214,7 @@ class EquilibriumOptimizer(NavigatorOptimizer):
global_opt_timing[-1] += time.time() - t_before_final_opt global_opt_timing[-1] += time.time() - t_before_final_opt
# apply clean up as final opt can have done changes that # apply clean up as final opt can have done changes that
# request that # request that
for copt in self.cleanup_optimizers: apply_cleanup(iter_cleanup_sub_profs)
t_opt = time.time()
sub_prof = copt.apply(fgraph)
time_opts[copt] += time.time() - t_opt
iter_cleanup_sub_profs[copt] = [sub_prof]
# merge clean up profiles during that iteration. # merge clean up profiles during that iteration.
c_sub_profs = [] c_sub_profs = []
for copt, sub_profs in iteritems(iter_cleanup_sub_profs): for copt, sub_profs in iteritems(iter_cleanup_sub_profs):
...@@ -2223,8 +2222,8 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -2223,8 +2222,8 @@ class EquilibriumOptimizer(NavigatorOptimizer):
for s_p in sub_profs[1:]: for s_p in sub_profs[1:]:
sub_prof = copt.merge_profile(sub_prof, s_p) sub_prof = copt.merge_profile(sub_prof, s_p)
c_sub_profs.append(sub_prof) c_sub_profs.append(sub_prof)
cleanup_sub_profs.append(c_sub_profs) cleanup_sub_profs.append(c_sub_profs)
loop_process_count.append(process_count) loop_process_count.append(process_count)
loop_timing.append(float(time.time() - t0)) loop_timing.append(float(time.time() - t0))
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论