提交 cb3436b7 authored 作者: Frederic Bastien's avatar Frederic Bastien 提交者: sentient07

Make the useless Equilibrium an in2out() with a LocalGroupOpt. Later another…

Make the useless Equilibrium an in2out() with a LocalGroupOpt. Later another commit will make it run all the opt in that Group on the optimized node.
上级 aba7b816
...@@ -150,13 +150,15 @@ optdb = gof.SequenceDB() ...@@ -150,13 +150,15 @@ optdb = gof.SequenceDB()
optdb.register('merge1', gof.MergeOptimizer(), optdb.register('merge1', gof.MergeOptimizer(),
0, 'fast_run', 'fast_compile', 'merge') 0, 'fast_run', 'fast_compile', 'merge')
local_useless = gof.optdb.LocalGroupDB()
optdb.register('useless', gof.optdb.TopoDB(local_useless),
0.6, 'fast_run', 'fast_compile')
# After scan1 opt at 0.5 and before ShapeOpt at 1 # After scan1 opt at 0.5 and before ShapeOpt at 1
# This should only remove nodes. # This should only remove nodes.
# The opt should not do anything that need shape inference. # The opt should not do anything that need shape inference.
# New nodes that don't have infer_shape need that the original node # New nodes that don't have infer_shape need that the original node
# also don't have infer_shape # also don't have infer_shape
optdb.register('useless', gof.EquilibriumDB(ignore_newtrees=False),
0.6, 'fast_run', 'fast_compile')
optdb.register('merge1.1', gof.MergeOptimizer(), optdb.register('merge1.1', gof.MergeOptimizer(),
0.65, 'fast_run', 'fast_compile', 'merge') 0.65, 'fast_run', 'fast_compile', 'merge')
......
...@@ -406,6 +406,32 @@ class LocalGroupDB(SequenceDB): ...@@ -406,6 +406,32 @@ class LocalGroupDB(SequenceDB):
self.failure_callback = None self.failure_callback = None
class TopoDB(DB):
"""
Generate a local optimizer of type LocalOptGroup instead
of a global optimizer.
It supports the tracks, to only get applied to some Op.
"""
seq_opt = opt.TopoOptimizer
def __init__(self, db, order='in_to_out', ignore_newtrees=False,
failure_callback=None):
super(TopoDB, self).__init__()
self.db = db
self.order = order
self.ignore_newtrees = ignore_newtrees
self.failure_callback = failure_callback
def query(self, *tags, **kwtags):
return opt.TopoOptimizer(self.db.query(*tags, **kwtags),
self.order,
self.ignore_newtrees,
self.failure_callback)
class ProxyDB(DB): class ProxyDB(DB):
""" """
Wrap an existing proxy. Wrap an existing proxy.
......
...@@ -377,7 +377,7 @@ def register_useless(lopt, *tags, **kwargs): ...@@ -377,7 +377,7 @@ def register_useless(lopt, *tags, **kwargs):
return register return register
else: else:
name = kwargs.pop('name', None) or lopt.__name__ name = kwargs.pop('name', None) or lopt.__name__
compile.optdb['useless'].register(name, lopt, 'fast_run', compile.mode.local_useless.register(name, lopt, 'last', 'fast_run',
*tags, **kwargs) *tags, **kwargs)
return lopt return lopt
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论