Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
04b14241
MegEngine
项目概览
MegEngine 天元
/
MegEngine
大约 1 年 前同步成功
通知
399
Star
4705
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看板
提交
04b14241
编写于
1月 11, 2022
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(traced_module): fix TracedModule InternalGraph deepcopy exceed max recursion limit
GitOrigin-RevId: 2b52ad913d40e8bb54c9dcadc559a35b3b39099a
上级
355782ae
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
25 deletion
+26
-25
imperative/python/megengine/traced_module/module_tracer.py
imperative/python/megengine/traced_module/module_tracer.py
+0
-2
imperative/python/megengine/traced_module/traced_module.py
imperative/python/megengine/traced_module/traced_module.py
+24
-21
imperative/python/test/unit/traced_module/test_trace_module.py
...ative/python/test/unit/traced_module/test_trace_module.py
+2
-2
未找到文件。
imperative/python/megengine/traced_module/module_tracer.py
浏览文件 @
04b14241
...
...
@@ -148,7 +148,6 @@ class module_tracer:
self
.
checker
.
push_scope
()
self
.
_activate_constant_cache
.
append
([])
def
pop_scope
(
self
):
self
.
_active_scopes
.
pop
()
self
.
checker
.
pop_scope
()
...
...
@@ -157,7 +156,6 @@ class module_tracer:
if
hasattr
(
obj
,
"_NodeMixin__node"
):
delattr
(
obj
,
"_NodeMixin__node"
)
def
current_scope
(
self
):
if
self
.
_active_scopes
:
return
self
.
_active_scopes
[
-
1
]
...
...
imperative/python/megengine/traced_module/traced_module.py
浏览文件 @
04b14241
...
...
@@ -58,6 +58,7 @@ from ..quantization.observer import (
SyncMinMaxObserver
,
)
from
..tensor
import
Tensor
from
..utils.max_recursion_limit
import
max_recursion_limit
from
..version
import
__version__
from
.expr
import
(
Apply
,
...
...
@@ -1247,17 +1248,18 @@ class InternalGraph:
return
result
def
__deepcopy__
(
self
,
memo
):
if
id
(
self
)
in
memo
:
return
memo
[
id
(
self
)]
cls
=
self
.
__class__
result
=
cls
.
__new__
(
cls
)
state
=
{}
memo
[
id
(
self
)]
=
result
for
k
,
v
in
self
.
__dict__
.
items
():
if
not
isinstance
(
v
,
weakref
.
ReferenceType
):
state
[
k
]
=
copy
.
deepcopy
(
v
,
memo
)
result
.
__dict__
.
update
(
state
)
return
result
with
max_recursion_limit
():
if
id
(
self
)
in
memo
:
return
memo
[
id
(
self
)]
cls
=
self
.
__class__
result
=
cls
.
__new__
(
cls
)
state
=
{}
memo
[
id
(
self
)]
=
result
for
k
,
v
in
self
.
__dict__
.
items
():
if
not
isinstance
(
v
,
weakref
.
ReferenceType
):
state
[
k
]
=
copy
.
deepcopy
(
v
,
memo
)
result
.
__dict__
.
update
(
state
)
return
result
def
_get_meth_name
(
obj
,
func
):
...
...
@@ -2359,16 +2361,17 @@ class TracedModule(Module):
return
result
def
__deepcopy__
(
self
,
memo
):
cls
=
self
.
__class__
result
=
cls
.
__new__
(
cls
)
state
=
{}
memo
[
id
(
self
)]
=
result
for
k
,
v
in
self
.
__dict__
.
items
():
if
not
isinstance
(
v
,
weakref
.
ReferenceType
):
state
[
k
]
=
copy
.
deepcopy
(
v
,
memo
)
result
.
__dict__
.
update
(
state
)
result
.
_update_ref
()
return
result
with
max_recursion_limit
():
cls
=
self
.
__class__
result
=
cls
.
__new__
(
cls
)
state
=
{}
memo
[
id
(
self
)]
=
result
for
k
,
v
in
self
.
__dict__
.
items
():
if
not
isinstance
(
v
,
weakref
.
ReferenceType
):
state
[
k
]
=
copy
.
deepcopy
(
v
,
memo
)
result
.
__dict__
.
update
(
state
)
result
.
_update_ref
()
return
result
def
cpp_apply_module_trace
(
opdef
,
*
args
):
...
...
imperative/python/test/unit/traced_module/test_trace_module.py
浏览文件 @
04b14241
...
...
@@ -6,7 +6,7 @@ import megengine.functional as F
import
megengine.module
as
M
from
megengine
import
Tensor
from
megengine.module.module
import
Module
from
megengine.traced_module
import
TracedModule
,
trace_module
from
megengine.traced_module
import
TracedModule
,
enable_expr_checker
,
trace_module
from
megengine.traced_module.expr
import
CallFunction
...
...
@@ -58,7 +58,7 @@ class MyModule4(M.Module):
def
test_trace_module
():
enable_expr_checker
()
x
=
Tensor
(
1
)
m1
=
MyModule1
()
tm1
=
trace_module
(
m1
,
x
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录