提交 29a3778d authored 作者: Frederic Bastien's avatar Frederic Bastien

Convert an hidden linear operation into a constant time operation as was done in…

Convert an hidden linear operation into a constant time operation as was done in EquilibriumOptimizer
上级 9d29cb8e
...@@ -2075,13 +2075,7 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -2075,13 +2075,7 @@ class TopoOptimizer(NavigatorOptimizer):
if node is not current_node: if node is not current_node:
q.append(node) q.append(node)
def pruner(node): u = self.attach_updater(fgraph, importer, None,
if node is not current_node:
try:
q.remove(node)
except ValueError:
pass
u = self.attach_updater(fgraph, importer, pruner,
name=getattr(self, 'name', None)) name=getattr(self, 'name', None))
nb = 0 nb = 0
try: try:
...@@ -2091,6 +2085,8 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -2091,6 +2085,8 @@ class TopoOptimizer(NavigatorOptimizer):
node = q.pop() node = q.pop()
else: else:
node = q.popleft() node = q.popleft()
if node not in fgraph.apply_nodes:
continue
current_node = node current_node = node
nb += self.process_node(fgraph, node) nb += self.process_node(fgraph, node)
loop_t = time.time() - t0 loop_t = time.time() - t0
...@@ -2203,17 +2199,13 @@ class OpKeyOptimizer(NavigatorOptimizer): ...@@ -2203,17 +2199,13 @@ class OpKeyOptimizer(NavigatorOptimizer):
if node.op == op: if node.op == op:
q.append(node) q.append(node)
def pruner(node): u = self.attach_updater(fgraph, importer, None,
if node is not current_node and node.op == op:
try:
q.remove(node)
except ValueError:
pass
u = self.attach_updater(fgraph, importer, pruner,
name=getattr(self, 'name', None)) name=getattr(self, 'name', None))
try: try:
while q: while q:
node = q.pop() node = q.pop()
if node not in fgraph.apply_nodes:
continue
current_node = node current_node = node
self.process_node(fgraph, node) self.process_node(fgraph, node)
finally: finally:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论