Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
af828ca9
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看板
提交
af828ca9
编写于
9月 07, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mgb/gopt): fix folding conv dimshuffle pass
GitOrigin-RevId: 756878c173787481761a48c8d0550aa409702b3b
上级
c67c4b7d
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
22 addition
and
21 deletion
+22
-21
src/gopt/impl/folding_conv_dimshuffle.cpp
src/gopt/impl/folding_conv_dimshuffle.cpp
+22
-21
未找到文件。
src/gopt/impl/folding_conv_dimshuffle.cpp
浏览文件 @
af828ca9
...
...
@@ -240,11 +240,30 @@ void FoldingConvBiasDimshufflePass::apply(OptState& opt) const {
&
readers
](
OperatorNodeBase
*
opr
)
{
ThinHashSet
<
OperatorNodeBase
*>
opr_set
;
ThinHashSet
<
OperatorNodeBase
*>
reader_set
;
// check typecvt
auto
typecvt
=
try_cast_as_op
<
opr
::
TypeCvt
>
(
opr
);
if
(
typecvt
==
nullptr
)
return
false
;
auto
in_dtype
=
typecvt
->
input
(
0
)
->
dtype
(),
out_dtype
=
typecvt
->
output
(
0
)
->
dtype
();
bool
is_s82s4
=
in_dtype
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
out_dtype
.
enumv
()
==
DTypeEnum
::
QuantizedS4
||
out_dtype
.
enumv
()
==
DTypeEnum
::
Quantized4Asymm
);
if
(
!
is_s82s4
)
return
false
;
opr_set
.
insert
(
typecvt
);
// check reshape
auto
reshape
=
try_cast_as_op
<
opr
::
Reshape
>
(
opr
);
auto
reshape
=
try_cast_as_op
<
opr
::
Reshape
>
(
typecvt
->
input
(
0
)
->
owner_opr
());
if
(
reshape
==
nullptr
)
return
false
;
opr_set
.
insert
(
opr
);
opr_set
.
insert
(
reshape
);
for
(
auto
&&
i
:
readers
[
reshape
])
{
if
(
i
.
second
&
DepType
::
DEV_VALUE
)
{
reader_set
.
insert
(
i
.
first
);
}
}
// check dimshuffle
auto
shuffle
=
...
...
@@ -267,27 +286,9 @@ void FoldingConvBiasDimshufflePass::apply(OptState& opt) const {
}
}
auto
typecvt
=
try_cast_as_op
<
opr
::
TypeCvt
>
(
shuffle
->
input
(
0
)
->
owner_opr
());
if
(
typecvt
==
nullptr
)
return
false
;
auto
in_dtype
=
typecvt
->
input
(
0
)
->
dtype
(),
out_dtype
=
typecvt
->
output
(
0
)
->
dtype
();
bool
is_s82s4
=
in_dtype
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
out_dtype
.
enumv
()
==
DTypeEnum
::
QuantizedS4
||
out_dtype
.
enumv
()
==
DTypeEnum
::
Quantized4Asymm
);
if
(
!
is_s82s4
)
return
false
;
opr_set
.
insert
(
typecvt
);
for
(
auto
&&
i
:
readers
[
typecvt
])
{
if
(
i
.
second
&
DepType
::
DEV_VALUE
)
{
reader_set
.
insert
(
i
.
first
);
}
}
// check conv bias
auto
conv_bias
=
try_cast_as_op
<
opr
::
ConvBias
>
(
typecvt
->
input
(
0
)
->
owner_opr
());
try_cast_as_op
<
opr
::
ConvBias
>
(
shuffle
->
input
(
0
)
->
owner_opr
());
if
(
conv_bias
==
nullptr
)
return
false
;
auto
inp_dtype
=
conv_bias
->
input
(
0
)
->
dtype
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录