提交 d73bfb97 authored 作者: sentient07's avatar sentient07

Changed the printing structure

上级 c57b0936
...@@ -335,6 +335,12 @@ class SeqOptimizer(Optimizer, list): ...@@ -335,6 +335,12 @@ class SeqOptimizer(Optimizer, list):
if sub_profs[i]: if sub_profs[i]:
opts[i].print_profile(stream, sub_profs[i], opts[i].print_profile(stream, sub_profs[i],
level=level + 1) level=level + 1)
if isinstance(opts[i], TopoOptimizer):
if isinstance(opts[i].local_opt, LocalOptGroup):
lo_g = opts[i].local_opt
opts[i].local_opt.print_profile(stream, (lo_g.time_opts,
lo_g.time_nodes,
lo_g.process_count))
print(file=stream) print(file=stream)
@staticmethod @staticmethod
...@@ -1260,12 +1266,10 @@ class LocalOptGroup(LocalOptimizer): ...@@ -1260,12 +1266,10 @@ class LocalOptGroup(LocalOptimizer):
assert len(kwargs) == 0 assert len(kwargs) == 0
self.time_opts = {} self.time_opts = {}
self.time_nodes = {} self.time_nodes = {}
self.node_created = {}
self.process_count = {} self.process_count = {}
for o in self.opts: for o in self.opts:
self.process_count.setdefault(o, 0) self.process_count.setdefault(o, 0)
self.node_created.setdefault(o, 0)
self.time_opts.setdefault(o, 0) self.time_opts.setdefault(o, 0)
for c in o.tracks(): for c in o.tracks():
self.track_map.setdefault(c, []).append(o) self.track_map.setdefault(c, []).append(o)
...@@ -1287,16 +1291,6 @@ class LocalOptGroup(LocalOptimizer): ...@@ -1287,16 +1291,6 @@ class LocalOptGroup(LocalOptimizer):
if len(self.opts) == 0: if len(self.opts) == 0:
return return
# This method is just kept for the `print_profile` method to know the variables that
# needs to be printed
def apply(self):
import pdb
pdb.set_trace()
return (self.time_opts,
self.time_nodes,
self.node_created,
self.process_count)
def compute_opts(node): def compute_opts(node):
opts = self.track_map.get(type(node.op), []) opts = self.track_map.get(type(node.op), [])
opts += self.track_map.get(node.op, []) opts += self.track_map.get(node.op, [])
...@@ -1314,7 +1308,6 @@ class LocalOptGroup(LocalOptimizer): ...@@ -1314,7 +1308,6 @@ class LocalOptGroup(LocalOptimizer):
continue continue
else: else:
self.time_opts[opt] = opt_start - opt_finish self.time_opts[opt] = opt_start - opt_finish
self.node_created[opt] += len(graph.ops(node.inputs, node.outputs))
self.process_count[opt] += 1 self.process_count[opt] += 1
if not multiple_opts or not repl[0].owner: if not multiple_opts or not repl[0].owner:
return repl return repl
...@@ -1333,9 +1326,7 @@ class LocalOptGroup(LocalOptimizer): ...@@ -1333,9 +1326,7 @@ class LocalOptGroup(LocalOptimizer):
@staticmethod @staticmethod
def print_profile(stream, prof, level=0): def print_profile(stream, prof, level=0):
(time_opts, time_nodes, node_created, process_count) = prof (time_opts, time_nodes, process_count) = prof
import pdb
pdb.set_trace()
blanc = (' ' * int(level)) blanc = (' ' * int(level))
print(blanc, "LocalOptGroup", file=stream) print(blanc, "LocalOptGroup", file=stream)
count_opt = [] count_opt = []
...@@ -1343,22 +1334,18 @@ class LocalOptGroup(LocalOptimizer): ...@@ -1343,22 +1334,18 @@ class LocalOptGroup(LocalOptimizer):
not_used_time = 0 not_used_time = 0
for o, count in iteritems(process_count): for o, count in iteritems(process_count):
if count > 0: if count > 0:
count_opt.append((time_opts[o], count, count_opt.append((time_opts[o], count, o))
node_created[o], o))
else: else:
not_used.append((time_opts[o], o)) not_used.append((time_opts[o], o))
not_used_time += time_opts[o] not_used_time += time_opts[o]
if count_opt: if count_opt:
for i in count_opt:
if not "useless" in count_opt[-1].__name__:
continue
print(blanc, print(blanc,
' times - times applied - Node created - name:', ' times - times applied - name:',
file=stream) file=stream)
count_opt.sort() count_opt.sort()
for (t, count, n_created, o) in count_opt[::-1]: for (t, count, o) in count_opt[::-1]:
print(blanc, ' %.3fs - %d - %d - %s' % ( print(blanc, ' %.3fs - %d - %d - %s' % (
t, count, n_created, o), file=stream) t, count, o), file=stream)
print(blanc, ' %.3fs - in %d optimization that were not used (display those with runtime greater than 0)' % ( print(blanc, ' %.3fs - in %d optimization that were not used (display those with runtime greater than 0)' % (
not_used_time, len(not_used)), file=stream) not_used_time, len(not_used)), file=stream)
not_used.sort(key=lambda nu: (nu[0], str(nu[1]))) not_used.sort(key=lambda nu: (nu[0], str(nu[1])))
...@@ -1887,6 +1874,12 @@ class NavigatorOptimizer(Optimizer): ...@@ -1887,6 +1874,12 @@ class NavigatorOptimizer(Optimizer):
if u is not None: if u is not None:
fgraph.remove_feature(u) fgraph.remove_feature(u)
@staticmethod
def print_profile(stream, prof, level=0):
import pdb
pdb.set_trace()
def process_node(self, fgraph, node, lopt=None): def process_node(self, fgraph, node, lopt=None):
""" """
This function will use `lopt` to `transform` the `node`. The This function will use `lopt` to `transform` the `node`. The
...@@ -1997,7 +1990,6 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -1997,7 +1990,6 @@ class TopoOptimizer(NavigatorOptimizer):
if order not in ['out_to_in', 'in_to_out']: if order not in ['out_to_in', 'in_to_out']:
raise ValueError("order must be 'out_to_in' or 'in_to_out'") raise ValueError("order must be 'out_to_in' or 'in_to_out'")
self.order = order self.order = order
self.lopt = local_opt
NavigatorOptimizer.__init__(self, local_opt, ignore_newtrees, NavigatorOptimizer.__init__(self, local_opt, ignore_newtrees,
failure_callback) failure_callback)
...@@ -2039,7 +2031,7 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -2039,7 +2031,7 @@ class TopoOptimizer(NavigatorOptimizer):
callback_time = fgraph.execute_callbacks_time - callback_before callback_time = fgraph.execute_callbacks_time - callback_before
nb_nodes_end = len(fgraph.apply_nodes) nb_nodes_end = len(fgraph.apply_nodes)
return (self, nb, nb_nodes_start, nb_nodes_end, return (self, nb, nb_nodes_start, nb_nodes_end,
io_t, loop_t, callback_time, self.lopt) io_t, loop_t, callback_time, self.local_opt)
@staticmethod @staticmethod
def print_profile(stream, prof, level=0): def print_profile(stream, prof, level=0):
...@@ -2054,9 +2046,6 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -2054,9 +2046,6 @@ class TopoOptimizer(NavigatorOptimizer):
print(blanc, "TopoOptimizer ", print(blanc, "TopoOptimizer ",
getattr(opt, "name", getattr(opt, "__name__", "")), file=stream) getattr(opt, "name", getattr(opt, "__name__", "")), file=stream)
if getattr(opt, "name", getattr(opt, "__name__", "")) == 'useless':
import pdb
pdb.set_trace()
print(blanc, " nb_node (start, end, changed)", ( print(blanc, " nb_node (start, end, changed)", (
nb_nodes_start, nb_nodes_end, nb), file=stream) nb_nodes_start, nb_nodes_end, nb), file=stream)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论