Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
4c269ccb
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
4c269ccb
编写于
7月 06, 2022
作者:
X
xiaoxiaohehe001
提交者:
GitHub
7月 06, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Paddle Inference] Add conv_elementwise_act. (#43871)
* conv_fusion
上级
24d07b73
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
43 addition
and
4 deletion
+43
-4
paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc
...fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc
+18
-0
paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc
.../fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc
+18
-0
paddle/fluid/framework/ir/graph_pattern_detector.cc
paddle/fluid/framework/ir/graph_pattern_detector.cc
+2
-1
paddle/fluid/operators/fused/conv_fusion_op.cu
paddle/fluid/operators/fused/conv_fusion_op.cu
+5
-3
未找到文件。
paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc
浏览文件 @
4c269ccb
...
@@ -105,6 +105,22 @@ ConvElementwiseAdd2ActFusePass::ConvElementwiseAdd2ActFusePass() {
...
@@ -105,6 +105,22 @@ ConvElementwiseAdd2ActFusePass::ConvElementwiseAdd2ActFusePass() {
.
AddOutput
(
"Out"
)
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
IsTensor
()
.
End
();
.
End
();
AddOpCompat
(
OpCompat
(
"sigmoid"
))
.
AddInput
(
"X"
)
.
IsTensor
()
.
End
()
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
End
();
AddOpCompat
(
OpCompat
(
"tanh"
))
.
AddInput
(
"X"
)
.
IsTensor
()
.
End
()
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
End
();
}
}
void
ConvElementwiseAdd2ActFusePass
::
ApplyImpl
(
ir
::
Graph
*
graph
)
const
{
void
ConvElementwiseAdd2ActFusePass
::
ApplyImpl
(
ir
::
Graph
*
graph
)
const
{
...
@@ -188,4 +204,6 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add2_act_fuse_pass)
...
@@ -188,4 +204,6 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add2_act_fuse_pass)
.
LE
(
"conv2d"
,
1
)
.
LE
(
"conv2d"
,
1
)
.
LE
(
"elementwise_add"
,
1
)
.
LE
(
"elementwise_add"
,
1
)
.
EQ
(
"relu"
,
0
)
.
EQ
(
"relu"
,
0
)
.
EQ
(
"sigmoid"
,
0
)
.
EQ
(
"tanh"
,
0
)
.
EQ
(
"identity"
,
0
));
.
EQ
(
"identity"
,
0
));
paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc
浏览文件 @
4c269ccb
...
@@ -102,6 +102,22 @@ ConvElementwiseAddActFusePass::ConvElementwiseAddActFusePass() {
...
@@ -102,6 +102,22 @@ ConvElementwiseAddActFusePass::ConvElementwiseAddActFusePass() {
.
AddOutput
(
"Out"
)
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
IsTensor
()
.
End
();
.
End
();
AddOpCompat
(
OpCompat
(
"sigmoid"
))
.
AddInput
(
"X"
)
.
IsTensor
()
.
End
()
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
End
();
AddOpCompat
(
OpCompat
(
"tanh"
))
.
AddInput
(
"X"
)
.
IsTensor
()
.
End
()
.
AddOutput
(
"Out"
)
.
IsTensor
()
.
End
();
}
}
void
ConvElementwiseAddActFusePass
::
ApplyImpl
(
ir
::
Graph
*
graph
)
const
{
void
ConvElementwiseAddActFusePass
::
ApplyImpl
(
ir
::
Graph
*
graph
)
const
{
...
@@ -170,4 +186,6 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add_act_fuse_pass)
...
@@ -170,4 +186,6 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add_act_fuse_pass)
.
LE
(
"conv2d"
,
1
)
.
LE
(
"conv2d"
,
1
)
.
LE
(
"elementwise_add"
,
1
)
.
LE
(
"elementwise_add"
,
1
)
.
EQ
(
"relu"
,
0
)
.
EQ
(
"relu"
,
0
)
.
EQ
(
"sigmoid"
,
0
)
.
EQ
(
"tanh"
,
0
)
.
EQ
(
"identity"
,
0
));
.
EQ
(
"identity"
,
0
));
paddle/fluid/framework/ir/graph_pattern_detector.cc
浏览文件 @
4c269ccb
...
@@ -2324,7 +2324,8 @@ PDNode *patterns::PriorBox::operator()() {
...
@@ -2324,7 +2324,8 @@ PDNode *patterns::PriorBox::operator()() {
return
boxes_var
;
return
boxes_var
;
}
}
std
::
unordered_set
<
std
::
string
>
conv_act_set
({
"identity"
,
"relu"
});
std
::
unordered_set
<
std
::
string
>
conv_act_set
(
{
"identity"
,
"relu"
,
"sigmoid"
,
"tanh"
});
PDNode
*
patterns
::
ConvElementwiseaddAct
::
operator
()(
PDNode
*
conv_in
)
{
PDNode
*
patterns
::
ConvElementwiseaddAct
::
operator
()(
PDNode
*
conv_in
)
{
conv_in
->
AsInput
();
conv_in
->
AsInput
();
...
...
paddle/fluid/operators/fused/conv_fusion_op.cu
浏览文件 @
4c269ccb
...
@@ -544,9 +544,11 @@ class CUDNNConvFusionOpKernel : public framework::OpKernel<T> {
...
@@ -544,9 +544,11 @@ class CUDNNConvFusionOpKernel : public framework::OpKernel<T> {
namespace
ops
=
paddle
::
operators
;
namespace
ops
=
paddle
::
operators
;
#if CUDNN_VERSION >= 7100
#if CUDNN_VERSION >= 7100
REGISTER_OP_CUDA_KERNEL
(
conv2d_fusion
,
REGISTER_OP_CUDA_KERNEL
(
conv2d_fusion
,
ops
::
CUDNNConvFusionOpKernel
<
float
>
,
ops
::
CUDNNConvFusionOpKernel
<
float
>
,
ops
::
CUDNNConvFusionOpKernel
<
double
>
);
ops
::
CUDNNConvFusionOpKernel
<
double
>
,
ops
::
CUDNNConvFusionOpKernel
<
paddle
::
platform
::
float16
>
);
#endif
#endif
#ifdef PADDLE_WITH_HIP
#ifdef PADDLE_WITH_HIP
REGISTER_OP_CUDA_KERNEL
(
conv2d_fusion
,
ops
::
CUDNNConvFusionOpKernel
<
float
>
);
REGISTER_OP_CUDA_KERNEL
(
conv2d_fusion
,
ops
::
CUDNNConvFusionOpKernel
<
float
>
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录