提交 1b2d2f2f authored 作者: Reyhane Askari's avatar Reyhane Askari

added CheckStrackTracehFeature and CheckStackTraceOptimization

上级 21a16b45
......@@ -226,6 +226,15 @@ optdb.register('add_destroy_handler', AddDestroyHandler(),
optdb.register('merge3', gof.MergeOptimizer(),
100, 'fast_run', 'merge')
if theano.config.check_stack_trace in ['check_all', 'check_and_skip']:
tags = ('fast_run', 'fast_compile')
if theano.config.check_stack_trace == 'not_checking':
tags = ()
optdb.register('CheckStackTrace',
gof.CheckStackTraceOptimization(), -1, *tags)
class Mode(object):
"""
......
......@@ -65,7 +65,7 @@ from theano.gof.opt import (
LocalOptimizer, local_optimizer, LocalOptGroup,
OpSub, OpRemove, PatternSub,
NavigatorOptimizer, TopoOptimizer, EquilibriumOptimizer,
OpKeyOptimizer)
OpKeyOptimizer, CheckStackTraceOptimization)
from theano.gof.optdb import \
DB, LocalGroupDB, Query, \
......
......@@ -3039,3 +3039,22 @@ def check_stack_trace(f_or_fgraph, ops_to_check='last', bug_print='raise'):
return False
return True
class CheckStrackTracehFeature(object):
def on_import(self, fgraph, node, reason):
if not check_stack_trace(fgraph, 'all'):
raise NotImplementedError(
"Empty stack trace! The optimization that whose"
" stacktrace is empty is %s", reason)
class CheckStackTraceOptimization(Optimizer):
"""Optimizer that serves to add ShapeFeature as an fgraph feature."""
def add_requirements(self, fgraph):
if not hasattr(fgraph, 'CheckStrackTracehFeature'):
fgraph.attach_feature(CheckStrackTracehFeature())
def apply(self, fgraph):
pass
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论