Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
187c1dc0
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
404
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看板
提交
187c1dc0
编写于
3年前
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(jit): copy aux var when shallow copying JITExecutor
GitOrigin-RevId: 3b331e1c17717c88b3149275ba4d860cb975213d
上级
7bd848ce
master
HuaHua404-patch-1
HuaHua404-patch-2
HuaHua404-patch-3
HuaHua404-patch-4
dev-support-lite-fork-debug-mode
release-1.10
release-1.11
release-1.11.1
release-1.12.0
release-1.12.1
release-1.12.2
release-1.12.3
release-1.12.4
release-1.12.5
release-1.13.0
release-1.13.1
release-1.9
test-try-import
tmp-test
try-import
v1.13.1
v1.13.0
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.12.0
v1.11.1
v1.11.0
v1.10.0
v1.9.1
v1.9.0
无相关合并请求
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
3 deletion
+43
-3
src/jit/impl/jit.sereg.h
src/jit/impl/jit.sereg.h
+43
-3
未找到文件。
src/jit/impl/jit.sereg.h
浏览文件 @
187c1dc0
...
...
@@ -9,7 +9,9 @@
* "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*/
#include "megbrain/graph/helper.h"
#include "megbrain/jit/executor_opr.h"
#include "megbrain/serialization/opr_shallow_copy.h"
#include "megbrain/serialization/sereg.h"
namespace
mgb
{
...
...
@@ -19,9 +21,47 @@ cg::OperatorNodeBase* opr_shallow_copy_jit_executor_opr(
const
cg
::
OperatorNodeBase
&
opr_
,
const
VarNodeArray
&
inputs
,
const
OperatorNodeConfig
&
config
)
{
auto
&&
opr
=
opr_
.
cast_final_safe
<
JITExecutor
>
();
return
JITExecutor
::
make
(
opr
.
internal_graph_ptr
(),
inputs
,
config
)
.
node
()
->
owner_opr
();
auto
*
shape_infer
=
opr
.
internal_graph
().
shape_infer
();
auto
*
value_infer
=
opr
.
internal_graph
().
value_infer
();
ThinHashMap
<
cg
::
VarNode
*
,
cg
::
VarNode
*>
var_replace_map
;
mgb_assert
(
inputs
.
size
()
==
opr
.
input
().
size
());
auto
on_opr
=
[
&
](
cg
::
OperatorNodeBase
*
opr
)
{
auto
&&
inputs
=
opr
->
input
();
cg
::
VarNodeArray
new_inputs
;
for
(
auto
&&
input
:
inputs
)
{
new_inputs
.
push_back
(
var_replace_map
.
at
(
input
));
}
auto
*
new_opr
=
opr
;
if
(
new_inputs
!=
inputs
)
{
auto
&&
config
=
opr
->
config
();
new_opr
=
mgb
::
serialization
::
copy_opr_shallow
(
*
opr
,
new_inputs
,
config
,
ctx
);
}
auto
&&
outputs
=
opr
->
output
();
auto
&&
new_outputs
=
new_opr
->
output
();
mgb_assert
(
outputs
.
size
()
==
new_outputs
.
size
());
for
(
size_t
i
=
0
;
i
<
outputs
.
size
();
++
i
)
{
var_replace_map
[
outputs
.
at
(
i
)]
=
new_outputs
.
at
(
i
);
}
};
cg
::
DepOprIter
iter
{
on_opr
};
for
(
size_t
i
=
0
;
i
<
inputs
.
size
();
++
i
)
{
var_replace_map
[
opr
.
input
(
i
)]
=
inputs
[
i
];
iter
.
set_visited
(
opr
.
input
(
i
)
->
owner_opr
());
}
if
(
shape_infer
)
{
iter
.
add
(
shape_infer
);
shape_infer
=
var_replace_map
.
at
(
shape_infer
);
}
if
(
value_infer
)
{
iter
.
add
(
value_infer
);
value_infer
=
var_replace_map
.
at
(
value_infer
);
}
auto
internal_graph
=
opr
.
internal_graph_ptr
();
internal_graph
=
std
::
make_shared
<
InternalGraph
>
(
internal_graph
->
output
(),
shape_infer
,
value_infer
,
internal_graph
->
placeholders
());
return
JITExecutor
::
make
(
internal_graph
,
inputs
,
config
).
node
()
->
owner_opr
();
}
MGB_REG_OPR_SHALLOW_COPY
(
JITExecutor
,
opr_shallow_copy_jit_executor_opr
);
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部