Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
526c82c8
MegEngine
项目概览
MegEngine 天元
/
MegEngine
10 个月 前同步成功
通知
392
Star
4702
Fork
582
代码
文件
提交
分支
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看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
526c82c8
编写于
9月 13, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(traced_module): delete value of node when it will not be used by any expr
GitOrigin-RevId: 3fb7350d018ca7e32e7552fc4644eb5f34c59913
上级
db9ca196
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
4 deletion
+13
-4
imperative/python/megengine/traced_module/traced_module.py
imperative/python/megengine/traced_module/traced_module.py
+13
-4
未找到文件。
imperative/python/megengine/traced_module/traced_module.py
浏览文件 @
526c82c8
...
...
@@ -756,24 +756,32 @@ class InternalGraph:
return
not
end_nodes_set
return
False
ref_count
=
lambda
n
:
len
(
n
.
users
)
+
(
1
if
n
in
self
.
_outputs
else
0
)
for
n
,
v
in
zip
(
self
.
_inputs
,
inputs
):
node2value
[
n
]
=
v
if
ref_count
(
n
)
>
0
:
node2value
[
n
]
=
[
v
,
ref_count
(
n
)]
if
n
in
self
.
_watch_point
:
self
.
_rst
[
n
].
append
(
v
)
if
n
in
self
.
_end_point
and
get_all_endnode_val
(
n
,
v
):
return
list
(
endnode2value
[
i
]
for
i
in
self
.
_end_point
)
for
expr
in
self
.
_exprs
:
values
=
expr
.
interpret
(
*
list
(
node2value
[
i
]
for
i
in
expr
.
inputs
))
values
=
expr
.
interpret
(
*
list
(
node2value
[
i
][
0
]
for
i
in
expr
.
inputs
))
for
n
in
expr
.
inputs
:
node2value
[
n
][
1
]
-=
1
if
node2value
[
n
][
1
]
==
0
:
node2value
.
pop
(
n
)
if
values
is
not
None
:
for
n
,
v
in
zip
(
expr
.
outputs
,
values
):
node2value
[
n
]
=
v
if
ref_count
(
n
)
>
0
:
node2value
[
n
]
=
[
v
,
ref_count
(
n
)]
if
n
in
self
.
_watch_point
:
self
.
_rst
[
n
]
=
v
if
self
.
_end_point
and
get_all_endnode_val
(
n
,
v
):
return
list
(
endnode2value
[
i
]
for
i
in
self
.
_end_point
)
return
list
(
node2value
[
i
]
for
i
in
self
.
_outputs
)
return
list
(
node2value
[
i
]
[
0
]
for
i
in
self
.
_outputs
)
def
eval
(
self
,
*
inputs
):
assert
len
(
inputs
)
==
len
(
self
.
_inputs
)
-
1
...
...
@@ -1575,6 +1583,7 @@ class TracedModule(Module):
for
index
,
inp
in
enumerate
(
expr
.
inputs
):
if
inp
is
call_out
:
expr
.
inputs
[
index
]
=
repl_dict
[
out
]
repl_dict
[
out
].
users
.
append
(
expr
)
continue
repl_dict
[
out
]
=
call
.
outputs
[
ind
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录