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

Refresh the theano cache when starting a new function compilation.

This fix problem of some module in the cache being skipped.
上级 bd862ae9
...@@ -975,10 +975,24 @@ class FunctionMaker(object): ...@@ -975,10 +975,24 @@ class FunctionMaker(object):
raise TypeError( raise TypeError(
'profile passed via both "mode" and "profile" arguments') 'profile passed via both "mode" and "profile" arguments')
self.profile = profile = profile or mode_profile self.profile = profile = profile or mode_profile
if profile: if profile or theano.config.cxx:
# We preload the cache here to don't have its timming # This is very important:
# included in optimization that compile function. # 1) We preload the cache here to don't have its timming
theano.gof.cc.get_module_cache() # included in optimization that compile function.
# 2) If other repo that import Theano have Theano ops defined,
# we need to refresh the cache here. Otherwise, their is import
# order problems.
# When device=gpu, we compile during Theano import. This trigger
# the loading of the cache. But unpickling the cache ask that the
# other repos Ops are completly loaded, which isn't always the
# case!
# If a module isn't completly loaded and their unpickling fail,
# it mean it is safe for this function compilation to skip them,
# but not for futur compilation. So reloading the cache at each
# compilation fix this problem.
# 3) This help propagate knowledge of newly compiled module to
# concurrent process.
theano.gof.cc.get_module_cache().refresh()
# Handle the case where inputs and/or outputs is a single Variable (not in a list) # Handle the case where inputs and/or outputs is a single Variable (not in a list)
self.orig_outputs = outputs self.orig_outputs = outputs
unpack_single = False unpack_single = False
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论