Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
76f36796
MegEngine
项目概览
MegEngine 天元
/
MegEngine
接近 2 年 前同步成功
通知
414
Star
4708
Fork
583
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
76f36796
编写于
9月 07, 2020
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(mge/trace): fix op order in symbolic
GitOrigin-RevId: fbf081a1999dec7b9401d8898b938eec19021e98
上级
10e942d9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
9 deletion
+16
-9
imperative/python/megengine/jit/tracing.py
imperative/python/megengine/jit/tracing.py
+16
-9
未找到文件。
imperative/python/megengine/jit/tracing.py
浏览文件 @
76f36796
...
@@ -124,7 +124,8 @@ class trace:
...
@@ -124,7 +124,8 @@ class trace:
self
.
_graph
=
None
self
.
_graph
=
None
self
.
_need_reset_nodes
=
None
self
.
_need_reset_nodes
=
None
self
.
_lazy_eval_graph
=
None
self
.
_lazy_eval_graph
=
None
self
.
_lazy_eval_tensors
=
weakref
.
WeakSet
()
self
.
_lazy_eval_tensors
=
[]
self
.
_lazy_eval_tensor_count
=
0
self
.
_active_tensors
=
weakref
.
WeakSet
()
self
.
_active_tensors
=
weakref
.
WeakSet
()
self
.
_tensor_remaps
=
None
self
.
_tensor_remaps
=
None
self
.
_inputs_to_restore
=
None
self
.
_inputs_to_restore
=
None
...
@@ -283,12 +284,18 @@ class trace:
...
@@ -283,12 +284,18 @@ class trace:
x
.
_TraceMixin__restore
()
x
.
_TraceMixin__restore
()
if
self
.
_symbolic
:
if
self
.
_symbolic
:
# eval lazy eval tensors
# eval lazy eval tensors
lazy_eval_tensors
=
tuple
(
self
.
_lazy_eval_tensors
)
if
self
.
_lazy_eval_tensors
:
if
lazy_eval_tensors
:
lazy_eval_tensors
=
[]
readers
=
[
visited
=
set
()
G
.
OutputNode
(
x
.
_LazyEvalTensor__varnode
).
outputs
[
0
]
readers
=
[]
for
x
in
lazy_eval_tensors
for
x
in
self
.
_lazy_eval_tensors
:
]
x
=
x
()
if
x
is
None
or
x
in
visited
:
continue
reader
=
G
.
OutputNode
(
x
.
_LazyEvalTensor__varnode
).
outputs
[
0
]
readers
.
append
(
reader
)
lazy_eval_tensors
.
append
(
x
)
visited
.
add
(
x
)
self
.
_apply_graph_options
(
self
.
_lazy_eval_graph
)
self
.
_apply_graph_options
(
self
.
_lazy_eval_graph
)
self
.
_lazy_eval_graph
.
compile
(
*
readers
)
self
.
_lazy_eval_graph
.
compile
(
*
readers
)
self
.
_lazy_eval_graph
()
self
.
_lazy_eval_graph
()
...
@@ -844,7 +851,7 @@ def apply_symbolic_mode(op: OpDef, *args: RawTensor):
...
@@ -844,7 +851,7 @@ def apply_symbolic_mode(op: OpDef, *args: RawTensor):
]
]
ovars
=
apply
(
op
,
*
ivars
)
ovars
=
apply
(
op
,
*
ivars
)
outputs
=
[
LazyEvalTensor
(
v
)
for
v
in
ovars
]
outputs
=
[
LazyEvalTensor
(
v
)
for
v
in
ovars
]
active_trace
.
_lazy_eval_tensors
.
update
(
outputs
)
active_trace
.
_lazy_eval_tensors
.
extend
(
weakref
.
ref
(
oup
)
for
oup
in
outputs
)
return
outputs
return
outputs
...
@@ -855,7 +862,7 @@ apply.disable(apply_symbolic_mode)
...
@@ -855,7 +862,7 @@ apply.disable(apply_symbolic_mode)
def
apply_const_symbolic_mode
(
op
:
Const
,
*
args
:
RawTensor
):
def
apply_const_symbolic_mode
(
op
:
Const
,
*
args
:
RawTensor
):
graph
=
active_trace
.
_lazy_eval_graph
graph
=
active_trace
.
_lazy_eval_graph
ret
=
LazyEvalTensor
(
graph
.
make_const
(
op
.
value
,
dtype
=
op
.
dtype
,
device
=
op
.
device
))
ret
=
LazyEvalTensor
(
graph
.
make_const
(
op
.
value
,
dtype
=
op
.
dtype
,
device
=
op
.
device
))
active_trace
.
_lazy_eval_tensors
.
a
dd
(
ret
)
active_trace
.
_lazy_eval_tensors
.
a
ppend
(
weakref
.
ref
(
ret
)
)
return
(
ret
,)
return
(
ret
,)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录