提交 70f6c8eb authored 作者: Frederic's avatar Frederic

Add the Theano flags allow_gc

上级 ef1b9f3a
...@@ -63,11 +63,11 @@ def check_equal(x, y): ...@@ -63,11 +63,11 @@ def check_equal(x, y):
predefined_linkers = { predefined_linkers = {
'py': gof.PerformLinker(), 'py': gof.PerformLinker(),
'c': gof.CLinker(), 'c': gof.CLinker(),
'c|py': gof.OpWiseCLinker(allow_gc=True), 'c|py': gof.OpWiseCLinker(),
'c|py_nogc': gof.OpWiseCLinker(allow_gc=False), 'c|py_nogc': gof.OpWiseCLinker(allow_gc=False),
'c&py': gof.DualLinker(checker=check_equal), 'c&py': gof.DualLinker(checker=check_equal),
'vm': gof.vm.VM_Linker(allow_gc=True, use_cloop=False), 'vm': gof.vm.VM_Linker(use_cloop=False),
'cvm': gof.vm.VM_Linker(allow_gc=True, use_cloop=True), 'cvm': gof.vm.VM_Linker(use_cloop=True),
'vm_nogc': gof.vm.VM_Linker(allow_gc=False, use_cloop=False), 'vm_nogc': gof.vm.VM_Linker(allow_gc=False, use_cloop=False),
'cvm_nogc': gof.vm.VM_Linker(allow_gc=False, use_cloop=True), 'cvm_nogc': gof.vm.VM_Linker(allow_gc=False, use_cloop=True),
} }
......
...@@ -117,6 +117,16 @@ except OSError: ...@@ -117,6 +117,16 @@ except OSError:
del dummy_stdin del dummy_stdin
#Keep the default optimizer the same as the one for the mode FAST_RUN
AddConfigVar('allow_gc',
"Do we default to delete intermediate results during Theano"
" function call? Doing so lower the memory requirement, but ask"
" that we reallocate memory at the next function call."
" This is implemented for the default linker, but not work all"
" linker",
BoolParam(True),
in_c_key=False)
#Keep the default optimizer the same as the one for the mode FAST_RUN #Keep the default optimizer the same as the one for the mode FAST_RUN
AddConfigVar('optimizer', AddConfigVar('optimizer',
("Default optimizer. If not None, will use this linker with the Mode " ("Default optimizer. If not None, will use this linker with the Mode "
......
...@@ -1395,8 +1395,10 @@ class OpWiseCLinker(link.LocalLinker): ...@@ -1395,8 +1395,10 @@ class OpWiseCLinker(link.LocalLinker):
def __init__(self, def __init__(self,
fallback_on_perform=True, fallback_on_perform=True,
allow_gc=True, allow_gc=None,
nice_errors=True): nice_errors=True):
if allow_gc is None:
allow_gc = config.allow_gc
self.fgraph = None self.fgraph = None
self.fallback_on_perform = fallback_on_perform self.fallback_on_perform = fallback_on_perform
self.nice_errors = nice_errors self.nice_errors = nice_errors
......
...@@ -469,6 +469,7 @@ class VM_Linker(link.LocalLinker): ...@@ -469,6 +469,7 @@ class VM_Linker(link.LocalLinker):
allow_gc - force the virtual machine to clean up unnecessary allow_gc - force the virtual machine to clean up unnecessary
references, in order to allow garbage collection on references, in order to allow garbage collection on
intermediate values during computation of a function. intermediate values during computation of a function.
If None use as default the Theano flag allow_gc value.
use_cloop - use the C-based virtual machine if possible use_cloop - use the C-based virtual machine if possible
...@@ -477,6 +478,8 @@ class VM_Linker(link.LocalLinker): ...@@ -477,6 +478,8 @@ class VM_Linker(link.LocalLinker):
'node', 'thunk', 'storage_map', and 'compute_map'. 'node', 'thunk', 'storage_map', and 'compute_map'.
""" """
if allow_gc is None:
allow_gc = config.allow_gc
self.fgraph = None self.fgraph = None
self.allow_gc = allow_gc self.allow_gc = allow_gc
self.use_cloop = use_cloop self.use_cloop = use_cloop
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论