提交 d44efbcd authored 作者: Frederic Bastien's avatar Frederic Bastien

lowered the profiler overhead.

上级 91b67a6d
...@@ -25,7 +25,8 @@ class Profile_Maker(FunctionMaker): ...@@ -25,7 +25,8 @@ class Profile_Maker(FunctionMaker):
for i, node in enumerate(ret.maker.env.toposort()): for i, node in enumerate(ret.maker.env.toposort()):
self.mode.apply_time[(i,node)]=0.0 self.mode.apply_time[(i,node)]=0.0
self.mode.apply_call[(i,node)]=0 self.mode.apply_call[(i,node)]=0
# self.mode.op_cimpl[node.op] = assert len(ret.fn.thunk_groups[i])==1
self.mode.op_cimpl[node.op] = hasattr(ret.fn.thunk_groups[i][0],'cthunk')
return ret return ret
...@@ -71,7 +72,7 @@ class ProfileMode(Mode): ...@@ -71,7 +72,7 @@ class ProfileMode(Mode):
self.call_time = 0 self.call_time = 0
self.fn_time = 0 self.fn_time = 0
def blah(i, node, th): def profile_thunk(i, node, th):
if hasattr(th, 'cthunk'): if hasattr(th, 'cthunk'):
t0 = time.time() t0 = time.time()
failure = run_cthunk(th.cthunk) failure = run_cthunk(th.cthunk)
...@@ -88,7 +89,6 @@ class ProfileMode(Mode): ...@@ -88,7 +89,6 @@ class ProfileMode(Mode):
local_time[0] += dt local_time[0] += dt
apply_time[(i,node)] += dt apply_time[(i,node)] += dt
apply_call[(i,node)] += 1 apply_call[(i,node)] += 1
op_cimpl[node.op] = hasattr(th, 'cthunk')
self.provided_linker = linker self.provided_linker = linker
...@@ -96,7 +96,7 @@ class ProfileMode(Mode): ...@@ -96,7 +96,7 @@ class ProfileMode(Mode):
if isinstance(linker, str) or linker is None: if isinstance(linker, str) or linker is None:
linker = predefined_linkers[linker] linker = predefined_linkers[linker]
linker = WrapLinker([linker], blah) linker = WrapLinker([linker], profile_thunk)
self.linker = linker self.linker = linker
if isinstance(optimizer, str) or optimizer is None: if isinstance(optimizer, str) or optimizer is None:
......
...@@ -5,6 +5,7 @@ from type import Type ...@@ -5,6 +5,7 @@ from type import Type
import sys, traceback import sys, traceback
from copy import copy from copy import copy
from theano.gof.python25 import all
__excepthook = sys.excepthook __excepthook = sys.excepthook
def thunk_hook(type, value, trace): def thunk_hook(type, value, trace):
...@@ -533,6 +534,7 @@ class WrapLinker(Linker): ...@@ -533,6 +534,7 @@ class WrapLinker(Linker):
wrapper(i, node, *thunks) wrapper(i, node, *thunks)
except: except:
raise_with_op(node) raise_with_op(node)
f.thunk_groups = thunk_groups
return f, inputs0, outputs0 return f, inputs0, outputs0
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论