From e8c9a0432cbd922feeb52f7de20079a8ecff8cb1 Mon Sep 17 00:00:00 2001 From: xiaoxiaohehe001 Date: Mon, 27 Jun 2022 10:43:57 +0000 Subject: [PATCH 1/5] conv_fusion --- .../ir/conv_elementwise_add2_act_fuse_pass.cc | 31 +++++++++++++++++++ .../ir/conv_elementwise_add_act_fuse_pass.cc | 31 +++++++++++++++++++ .../framework/ir/graph_pattern_detector.cc | 5 ++- 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc b/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc index ff86bdb8fa86f..c5954c6fa1fed 100644 --- a/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc +++ b/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc @@ -105,6 +105,32 @@ ConvElementwiseAdd2ActFusePass::ConvElementwiseAdd2ActFusePass() { .AddOutput("Out") .IsTensor() .End(); + + AddOpCompat(OpCompat("sigmoid")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); + + AddOpCompat(OpCompat("tanh")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); + +#if CUDNN_VERSION >= 8300 + AddOpCompat(OpCompat("swish")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); +#endif } void ConvElementwiseAdd2ActFusePass::ApplyImpl(ir::Graph* graph) const { @@ -188,4 +214,9 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add2_act_fuse_pass) .LE("conv2d", 1) .LE("elementwise_add", 1) .EQ("relu", 0) + .EQ("sigmoid", 0) + .EQ("tanh", 0) +#if CUDNN_VERSION >= 8300 + .EQ("swish", 0) +#endif .EQ("identity", 0)); diff --git a/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc b/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc index f67e83bc10171..972abb14112db 100644 --- a/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc +++ b/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc @@ -102,6 +102,32 @@ ConvElementwiseAddActFusePass::ConvElementwiseAddActFusePass() { .AddOutput("Out") .IsTensor() .End(); + + AddOpCompat(OpCompat("sigmoid")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); + + AddOpCompat(OpCompat("tanh")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); + +#if CUDNN_VERSION >= 8300 + AddOpCompat(OpCompat("swish")) + .AddInput("X") + .IsTensor() + .End() + .AddOutput("Out") + .IsTensor() + .End(); +#endif } void ConvElementwiseAddActFusePass::ApplyImpl(ir::Graph* graph) const { @@ -170,4 +196,9 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add_act_fuse_pass) .LE("conv2d", 1) .LE("elementwise_add", 1) .EQ("relu", 0) + .EQ("sigmoid", 0) + .EQ("tanh", 0) +#if CUDNN_VERSION >= 8300 + .EQ("swish", 0) +#endif .EQ("identity", 0)); diff --git a/paddle/fluid/framework/ir/graph_pattern_detector.cc b/paddle/fluid/framework/ir/graph_pattern_detector.cc index d5b6122886850..129a2833780c9 100644 --- a/paddle/fluid/framework/ir/graph_pattern_detector.cc +++ b/paddle/fluid/framework/ir/graph_pattern_detector.cc @@ -2375,7 +2375,10 @@ PDNode *patterns::PriorBox::operator()() { return boxes_var; } -std::unordered_set conv_act_set({"identity", "relu"}); +std::unordered_set conv_act_set({"identity", "relu", "sigmoid", "tanh"}); +#if CUDNN_VERSION >= 8300 +conv_act_set.insert("swish"); +#endif PDNode *patterns::ConvElementwiseaddAct::operator()(PDNode *conv_in) { conv_in->AsInput(); From e3237498b94dd7ce856ef0604e07dfd52f0f4f95 Mon Sep 17 00:00:00 2001 From: xiaoxiaohehe001 Date: Mon, 27 Jun 2022 11:29:57 +0000 Subject: [PATCH 2/5] conv_fusion --- paddle/fluid/framework/ir/graph_pattern_detector.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/framework/ir/graph_pattern_detector.cc b/paddle/fluid/framework/ir/graph_pattern_detector.cc index 129a2833780c9..63991871d07e1 100644 --- a/paddle/fluid/framework/ir/graph_pattern_detector.cc +++ b/paddle/fluid/framework/ir/graph_pattern_detector.cc @@ -2375,7 +2375,8 @@ PDNode *patterns::PriorBox::operator()() { return boxes_var; } -std::unordered_set conv_act_set({"identity", "relu", "sigmoid", "tanh"}); +std::unordered_set conv_act_set( + {"identity", "relu", "sigmoid", "tanh"}); #if CUDNN_VERSION >= 8300 conv_act_set.insert("swish"); #endif From 66256d8994d46ef04d4282e0cc5a4ea23564b036 Mon Sep 17 00:00:00 2001 From: xiaoxiaohehe001 Date: Fri, 1 Jul 2022 12:19:18 +0000 Subject: [PATCH 3/5] conv_fusion --- .../ir/conv_elementwise_add2_act_fuse_pass.cc | 13 ------------- .../ir/conv_elementwise_add_act_fuse_pass.cc | 13 ------------- paddle/fluid/framework/ir/graph_pattern_detector.cc | 3 --- 3 files changed, 29 deletions(-) diff --git a/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc b/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc index c5954c6fa1fed..6d9611ebd1393 100644 --- a/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc +++ b/paddle/fluid/framework/ir/conv_elementwise_add2_act_fuse_pass.cc @@ -121,16 +121,6 @@ ConvElementwiseAdd2ActFusePass::ConvElementwiseAdd2ActFusePass() { .AddOutput("Out") .IsTensor() .End(); - -#if CUDNN_VERSION >= 8300 - AddOpCompat(OpCompat("swish")) - .AddInput("X") - .IsTensor() - .End() - .AddOutput("Out") - .IsTensor() - .End(); -#endif } void ConvElementwiseAdd2ActFusePass::ApplyImpl(ir::Graph* graph) const { @@ -216,7 +206,4 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add2_act_fuse_pass) .EQ("relu", 0) .EQ("sigmoid", 0) .EQ("tanh", 0) -#if CUDNN_VERSION >= 8300 - .EQ("swish", 0) -#endif .EQ("identity", 0)); diff --git a/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc b/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc index 972abb14112db..47e2c5e380bcb 100644 --- a/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc +++ b/paddle/fluid/framework/ir/conv_elementwise_add_act_fuse_pass.cc @@ -118,16 +118,6 @@ ConvElementwiseAddActFusePass::ConvElementwiseAddActFusePass() { .AddOutput("Out") .IsTensor() .End(); - -#if CUDNN_VERSION >= 8300 - AddOpCompat(OpCompat("swish")) - .AddInput("X") - .IsTensor() - .End() - .AddOutput("Out") - .IsTensor() - .End(); -#endif } void ConvElementwiseAddActFusePass::ApplyImpl(ir::Graph* graph) const { @@ -198,7 +188,4 @@ REGISTER_PASS_CAPABILITY(conv_elementwise_add_act_fuse_pass) .EQ("relu", 0) .EQ("sigmoid", 0) .EQ("tanh", 0) -#if CUDNN_VERSION >= 8300 - .EQ("swish", 0) -#endif .EQ("identity", 0)); diff --git a/paddle/fluid/framework/ir/graph_pattern_detector.cc b/paddle/fluid/framework/ir/graph_pattern_detector.cc index 63991871d07e1..6341fb8fa52d3 100644 --- a/paddle/fluid/framework/ir/graph_pattern_detector.cc +++ b/paddle/fluid/framework/ir/graph_pattern_detector.cc @@ -2377,9 +2377,6 @@ PDNode *patterns::PriorBox::operator()() { std::unordered_set conv_act_set( {"identity", "relu", "sigmoid", "tanh"}); -#if CUDNN_VERSION >= 8300 -conv_act_set.insert("swish"); -#endif PDNode *patterns::ConvElementwiseaddAct::operator()(PDNode *conv_in) { conv_in->AsInput(); From 6753dec4ae0df63392355828a28a426989a66e74 Mon Sep 17 00:00:00 2001 From: xiaoxiaohehe001 Date: Fri, 1 Jul 2022 12:21:38 +0000 Subject: [PATCH 4/5] conv_fusion --- paddle/fluid/operators/fused/conv_fusion_op.cu | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paddle/fluid/operators/fused/conv_fusion_op.cu b/paddle/fluid/operators/fused/conv_fusion_op.cu index 5e96ca140274d..69633f465c754 100644 --- a/paddle/fluid/operators/fused/conv_fusion_op.cu +++ b/paddle/fluid/operators/fused/conv_fusion_op.cu @@ -546,7 +546,8 @@ namespace ops = paddle::operators; #if CUDNN_VERSION >= 7100 REGISTER_OP_CUDA_KERNEL(conv2d_fusion, ops::CUDNNConvFusionOpKernel, - ops::CUDNNConvFusionOpKernel); + ops::CUDNNConvFusionOpKernel, + ops::CUDNNConvFusionOpKernel); #endif #ifdef PADDLE_WITH_HIP REGISTER_OP_CUDA_KERNEL(conv2d_fusion, ops::CUDNNConvFusionOpKernel); From 9d7c1747862dc9b5b3e4d7c25dcbda29eddc0177 Mon Sep 17 00:00:00 2001 From: xiaoxiaohehe001 Date: Mon, 4 Jul 2022 02:39:04 +0000 Subject: [PATCH 5/5] conv_fusion --- paddle/fluid/operators/fused/conv_fusion_op.cu | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/paddle/fluid/operators/fused/conv_fusion_op.cu b/paddle/fluid/operators/fused/conv_fusion_op.cu index 69633f465c754..2ee63c9364221 100644 --- a/paddle/fluid/operators/fused/conv_fusion_op.cu +++ b/paddle/fluid/operators/fused/conv_fusion_op.cu @@ -544,10 +544,11 @@ class CUDNNConvFusionOpKernel : public framework::OpKernel { namespace ops = paddle::operators; #if CUDNN_VERSION >= 7100 -REGISTER_OP_CUDA_KERNEL(conv2d_fusion, - ops::CUDNNConvFusionOpKernel, - ops::CUDNNConvFusionOpKernel, - ops::CUDNNConvFusionOpKernel); +REGISTER_OP_CUDA_KERNEL( + conv2d_fusion, + ops::CUDNNConvFusionOpKernel, + ops::CUDNNConvFusionOpKernel, + ops::CUDNNConvFusionOpKernel); #endif #ifdef PADDLE_WITH_HIP REGISTER_OP_CUDA_KERNEL(conv2d_fusion, ops::CUDNNConvFusionOpKernel);