From bda68107e4852cdf40670a773fa93493abcb75e5 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Fri, 11 Aug 2023 23:25:51 +0800 Subject: [PATCH 01/21] add cpu quantize pass unit test --- test/cpp/inference/api/CMakeLists.txt | 6 +- .../api/analysis_cpu_quantize_pass_tester.cc | 171 ++++++++++++++++++ 2 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc diff --git a/test/cpp/inference/api/CMakeLists.txt b/test/cpp/inference/api/CMakeLists.txt index 98d4c4986b579..d303c4d3085c5 100644 --- a/test/cpp/inference/api/CMakeLists.txt +++ b/test/cpp/inference/api/CMakeLists.txt @@ -625,7 +625,11 @@ if(WITH_TESTING AND WITH_INFERENCE_API_TEST) ${MOBILENET_MODEL_DIR} false) if(WITH_MKLDNN) - + set(BF32_CPU_QUANTIZE_PASS_TEST_APP "test_analyzer_cpu_quantize_pass") + set(BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC + "analysis_cpu_quantize_pass_tester.cc") + inference_analysis_api_test_build(${BF32_CPU_QUANTIZE_PASS_TEST_APP} + ${BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC}) ### INT8 tests set(INT8_DATA_DIR "${INFERENCE_DEMO_INSTALL_DIR}/int8v2") diff --git a/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc b/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc new file mode 100644 index 0000000000000..b3b74a9e710e7 --- /dev/null +++ b/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc @@ -0,0 +1,171 @@ +/* Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ + +#include +#include + +#include "paddle/fluid/inference/api/paddle_analysis_config.h" +#include "test/cpp/inference/api/tester_helper.h" + +#include "paddle/fluid/framework/ir/pass.h" +#include "paddle/fluid/framework/ir/pass_tester_helper.h" +#include "paddle/fluid/platform/enforce.h" +#include "paddle/fluid/framework/ir/graph.h" +#include "paddle/fluid/framework/op_desc.h" +#include "paddle/fluid/framework/program_desc.h" +#include +#include + +using namespace std; + +DEFINE_bool(enable_mkldnn, true, "Enable MKLDNN"); + +namespace paddle { +namespace inference { +namespace analysis { + +static float const SCALE = 2.f; +const std::vector PreGraphPasses({ + "simplify_with_basic_ops_pass", + "quant_dequant_mkldnn_pass", +// "mkldnn_placement_pass", +// "constant_folding_pass", + "squeeze2_transpose2_onednn_fuse_pass", + "layer_norm_fuse_pass", + "attention_lstm_fuse_pass", + "seqconv_eltadd_relu_fuse_pass", + "fc_lstm_fuse_pass", + "mul_lstm_fuse_pass", +// "fc_gru_fuse_pass", +// "mul_gru_fuse_pass", +// "multi_gru_fuse_pass", +// "multi_gru_seq_fuse_pass", +// "seq_concat_fc_fuse_pass", + "gpu_cpu_squeeze2_matmul_fuse_pass", + "gpu_cpu_reshape2_matmul_fuse_pass", + "gpu_cpu_flatten2_matmul_fuse_pass", + "matmul_v2_scale_fuse_pass", + "squared_mat_sub_fuse_pass", + "is_test_pass", + "gpu_cpu_map_matmul_v2_to_mul_pass", + "gpu_cpu_map_matmul_v2_to_matmul_pass", + "matmul_scale_fuse_pass", + "gpu_cpu_map_matmul_to_mul_pass", + "repeated_fc_relu_fuse_pass", + "depthwise_conv_mkldnn_pass", + "conv_bn_fuse_pass", + "conv_eltwiseadd_bn_fuse_pass", + "conv_affine_channel_mkldnn_fuse_pass", + "conv_transpose_bn_fuse_pass", + "conv_transpose_eltwiseadd_bn_fuse_pass", + "conv_bias_mkldnn_fuse_pass", + "conv_transpose_bias_mkldnn_fuse_pass", + "conv_elementwise_add_mkldnn_fuse_pass", + "conv_activation_mkldnn_fuse_pass", + "fc_fuse_pass", + "repeated_fc_relu_fuse_pass", + "fc_mkldnn_pass", + "fc_act_mkldnn_fuse_pass", + "matmul_transpose_reshape_mkldnn_fuse_pass", + "batch_norm_act_fuse_pass", + "softplus_activation_onednn_fuse_pass", +// "compute_propagate_scales_mkldnn_pass", + "scale_matmul_fuse_pass", + "reshape_transpose_matmul_mkldnn_fuse_pass", + "matmul_elementwise_add_mkldnn_fuse_pass", + "operator_scale_onednn_fuse_pass", + "operator_unsqueeze2_onednn_fuse_pass", + "operator_reshape2_onednn_fuse_pass", + "cpu_quantize_placement_pass", + "cpu_quantize_pass", + "cpu_quantize_squash_pass", + "quant_transpose2_dequant_onednn_fuse_pass" +}); +TEST(cpuQuantizePass, basic) { + paddle::framework::ProgramDesc prog; + auto* block = prog.MutableBlock(0); + + auto* conv2d_op = block->AppendOp(); + conv2d_op->SetType("conv2d"); + conv2d_op->SetInput("Input", {"conv2d-X"}); + conv2d_op->SetInput("Filter", {"conv2d-Y"}); + conv2d_op->SetOutput("Output", {"conv2d-Out"}); + + const std::vector strides({1, 1}); + const std::vector paddings({1, 1}); + const std::vector dilations({1, 1}); + const int groups = 1; + + conv2d_op->SetAttr("strides", strides); + conv2d_op->SetAttr("paddings", paddings); + conv2d_op->SetAttr("dilations", dilations); + conv2d_op->SetAttr("groups", groups); + + auto* relu6_op = block->AppendOp(); + relu6_op->SetType("relu6"); + relu6_op->SetAttr("threshold", 6.f); + relu6_op->SetInput("X", {"conv2d-Out"}); + relu6_op->SetOutput("Out", {"relu-Out"}); + + auto place = phi::CPUPlace(); + auto* scales = new VarQuantScale(); + phi::DenseTensor input_tensor; + phi::DenseTensor weight_tensor; + input_tensor.Resize({1}); + weight_tensor.Resize({1}); + auto* ptr_input = input_tensor.mutable_data(place); + auto* ptr_weight = weight_tensor.mutable_data(place); + ptr_input[0] = SCALE; + ptr_weight[0] = SCALE; + + (*scales)["conv2d-X"] = std::make_pair(false, std::move(input_tensor)); + (*scales)["conv2d-Y"] = std::make_pair(false, std::move(weight_tensor)); + + paddle::framework::Scope scope; + + std::unique_ptr graph(new paddle::framework::ir::Graph(prog)); + (graph)->SetNotOwned(paddle::framework::ir::kParamScopeAttr, &scope); + + int num_nodes_before = graph->Nodes().size(); + VLOG(3) << "Before apply pass, Graph node num:" << num_nodes_before; + VLOG(3) << DebugString(graph); + + for (const auto &pass : PreGraphPasses) { + auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); + if (pass == "fc_fuse_pass") { + pass_->Set("use_gpu", new bool(false)); + }else if(pass == "cpu_quantize_pass"){ + pass_->Set("quant_var_scales", scales); + }; + graph.reset(pass_->Apply(graph.release())); + } + int num_nodes_after = graph->Nodes().size(); + VLOG(3) << "-------------------------------------------"; + VLOG(3) << "After apply pass, Graph node num:" << num_nodes_after; + VLOG(3) << DebugString(graph); + for (auto* node : graph->Nodes()) { + if(node->IsOp() && node->Op() && node->Op()->Type() =="fused_conv2d"){ + VLOG(3) << "fused_conv2d OP: "; + VLOG(3) << "Op Attr(fuse_beta) value: "; + VLOG(3) << node->Op()->GetAttrIfExists("fuse_beta"); + CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) + << "Attr fuse_beta must equal to 6."; + }; + }; + +} + +} // namespace analysis +} // namespace inference +} // namespace paddle From e81c7cb62faf3d3c71b2b182b39d755863e4db36 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 10:55:35 +0800 Subject: [PATCH 02/21] rename --- test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc b/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc index b3b74a9e710e7..fff7c80d0f194 100644 --- a/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc +++ b/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc @@ -92,7 +92,7 @@ const std::vector PreGraphPasses({ "cpu_quantize_squash_pass", "quant_transpose2_dequant_onednn_fuse_pass" }); -TEST(cpuQuantizePass, basic) { +TEST(cpuQuantizePass, ConvReLU6) { paddle::framework::ProgramDesc prog; auto* block = prog.MutableBlock(0); From b3bd32ff8c1b786f2db93e5497eb7507cded6957 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 14:00:55 +0800 Subject: [PATCH 03/21] fix comment --- test/cpp/fluid/mkldnn/CMakeLists.txt | 6 ++ .../mkldnn/test_mkldnn_cpu_quantize_pass.cc} | 60 ++----------------- test/cpp/inference/api/CMakeLists.txt | 5 -- 3 files changed, 12 insertions(+), 59 deletions(-) rename test/cpp/{inference/api/analysis_cpu_quantize_pass_tester.cc => fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc} (68%) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 38e14df362fbd..754080b6b9c07 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -10,6 +10,12 @@ cc_test( device_context enforce generated_static_op) + +set(BF32_CPU_QUANTIZE_PASS_TEST_APP "test_mkldnn_cpu_quantize_pass") +set(BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC + "test_mkldnn_cpu_quantize_pass.cc") + inference_analysis_api_test_build(${BF32_CPU_QUANTIZE_PASS_TEST_APP} + ${BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC}) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc similarity index 68% rename from test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc rename to test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index fff7c80d0f194..a7261827e2f27 100644 --- a/test/cpp/inference/api/analysis_cpu_quantize_pass_tester.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -14,6 +14,7 @@ limitations under the License. */ #include #include +#include #include "paddle/fluid/inference/api/paddle_analysis_config.h" #include "test/cpp/inference/api/tester_helper.h" @@ -24,7 +25,6 @@ limitations under the License. */ #include "paddle/fluid/framework/ir/graph.h" #include "paddle/fluid/framework/op_desc.h" #include "paddle/fluid/framework/program_desc.h" -#include #include using namespace std; @@ -32,38 +32,15 @@ using namespace std; DEFINE_bool(enable_mkldnn, true, "Enable MKLDNN"); namespace paddle { -namespace inference { -namespace analysis { +namespace pass { +using VarQuantScale = + std::unordered_map>; + static float const SCALE = 2.f; const std::vector PreGraphPasses({ "simplify_with_basic_ops_pass", "quant_dequant_mkldnn_pass", -// "mkldnn_placement_pass", -// "constant_folding_pass", - "squeeze2_transpose2_onednn_fuse_pass", - "layer_norm_fuse_pass", - "attention_lstm_fuse_pass", - "seqconv_eltadd_relu_fuse_pass", - "fc_lstm_fuse_pass", - "mul_lstm_fuse_pass", -// "fc_gru_fuse_pass", -// "mul_gru_fuse_pass", -// "multi_gru_fuse_pass", -// "multi_gru_seq_fuse_pass", -// "seq_concat_fc_fuse_pass", - "gpu_cpu_squeeze2_matmul_fuse_pass", - "gpu_cpu_reshape2_matmul_fuse_pass", - "gpu_cpu_flatten2_matmul_fuse_pass", - "matmul_v2_scale_fuse_pass", - "squared_mat_sub_fuse_pass", - "is_test_pass", - "gpu_cpu_map_matmul_v2_to_mul_pass", - "gpu_cpu_map_matmul_v2_to_matmul_pass", - "matmul_scale_fuse_pass", - "gpu_cpu_map_matmul_to_mul_pass", - "repeated_fc_relu_fuse_pass", - "depthwise_conv_mkldnn_pass", "conv_bn_fuse_pass", "conv_eltwiseadd_bn_fuse_pass", "conv_affine_channel_mkldnn_fuse_pass", @@ -73,24 +50,11 @@ const std::vector PreGraphPasses({ "conv_transpose_bias_mkldnn_fuse_pass", "conv_elementwise_add_mkldnn_fuse_pass", "conv_activation_mkldnn_fuse_pass", - "fc_fuse_pass", - "repeated_fc_relu_fuse_pass", - "fc_mkldnn_pass", - "fc_act_mkldnn_fuse_pass", - "matmul_transpose_reshape_mkldnn_fuse_pass", - "batch_norm_act_fuse_pass", - "softplus_activation_onednn_fuse_pass", -// "compute_propagate_scales_mkldnn_pass", - "scale_matmul_fuse_pass", - "reshape_transpose_matmul_mkldnn_fuse_pass", - "matmul_elementwise_add_mkldnn_fuse_pass", "operator_scale_onednn_fuse_pass", "operator_unsqueeze2_onednn_fuse_pass", "operator_reshape2_onednn_fuse_pass", "cpu_quantize_placement_pass", "cpu_quantize_pass", - "cpu_quantize_squash_pass", - "quant_transpose2_dequant_onednn_fuse_pass" }); TEST(cpuQuantizePass, ConvReLU6) { paddle::framework::ProgramDesc prog; @@ -137,10 +101,6 @@ TEST(cpuQuantizePass, ConvReLU6) { std::unique_ptr graph(new paddle::framework::ir::Graph(prog)); (graph)->SetNotOwned(paddle::framework::ir::kParamScopeAttr, &scope); - int num_nodes_before = graph->Nodes().size(); - VLOG(3) << "Before apply pass, Graph node num:" << num_nodes_before; - VLOG(3) << DebugString(graph); - for (const auto &pass : PreGraphPasses) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); if (pass == "fc_fuse_pass") { @@ -150,15 +110,8 @@ TEST(cpuQuantizePass, ConvReLU6) { }; graph.reset(pass_->Apply(graph.release())); } - int num_nodes_after = graph->Nodes().size(); - VLOG(3) << "-------------------------------------------"; - VLOG(3) << "After apply pass, Graph node num:" << num_nodes_after; - VLOG(3) << DebugString(graph); for (auto* node : graph->Nodes()) { if(node->IsOp() && node->Op() && node->Op()->Type() =="fused_conv2d"){ - VLOG(3) << "fused_conv2d OP: "; - VLOG(3) << "Op Attr(fuse_beta) value: "; - VLOG(3) << node->Op()->GetAttrIfExists("fuse_beta"); CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) << "Attr fuse_beta must equal to 6."; }; @@ -166,6 +119,5 @@ TEST(cpuQuantizePass, ConvReLU6) { } -} // namespace analysis -} // namespace inference +} // namespace pass } // namespace paddle diff --git a/test/cpp/inference/api/CMakeLists.txt b/test/cpp/inference/api/CMakeLists.txt index d303c4d3085c5..f83b36da66180 100644 --- a/test/cpp/inference/api/CMakeLists.txt +++ b/test/cpp/inference/api/CMakeLists.txt @@ -625,11 +625,6 @@ if(WITH_TESTING AND WITH_INFERENCE_API_TEST) ${MOBILENET_MODEL_DIR} false) if(WITH_MKLDNN) - set(BF32_CPU_QUANTIZE_PASS_TEST_APP "test_analyzer_cpu_quantize_pass") - set(BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC - "analysis_cpu_quantize_pass_tester.cc") - inference_analysis_api_test_build(${BF32_CPU_QUANTIZE_PASS_TEST_APP} - ${BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC}) ### INT8 tests set(INT8_DATA_DIR "${INFERENCE_DEMO_INSTALL_DIR}/int8v2") From ae0cec1c9b0d31c2d919d10ec8440580086d55d3 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 14:01:46 +0800 Subject: [PATCH 04/21] fix comment --- test/cpp/inference/api/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cpp/inference/api/CMakeLists.txt b/test/cpp/inference/api/CMakeLists.txt index f83b36da66180..ed0291c15f4d8 100644 --- a/test/cpp/inference/api/CMakeLists.txt +++ b/test/cpp/inference/api/CMakeLists.txt @@ -625,6 +625,7 @@ if(WITH_TESTING AND WITH_INFERENCE_API_TEST) ${MOBILENET_MODEL_DIR} false) if(WITH_MKLDNN) + ### INT8 tests set(INT8_DATA_DIR "${INFERENCE_DEMO_INSTALL_DIR}/int8v2") From 2b283c742f9c883c35cce221a9fe7274f9018d75 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 14:02:32 +0800 Subject: [PATCH 05/21] fix comment --- test/cpp/inference/api/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/inference/api/CMakeLists.txt b/test/cpp/inference/api/CMakeLists.txt index ed0291c15f4d8..98d4c4986b579 100644 --- a/test/cpp/inference/api/CMakeLists.txt +++ b/test/cpp/inference/api/CMakeLists.txt @@ -625,7 +625,7 @@ if(WITH_TESTING AND WITH_INFERENCE_API_TEST) ${MOBILENET_MODEL_DIR} false) if(WITH_MKLDNN) - + ### INT8 tests set(INT8_DATA_DIR "${INFERENCE_DEMO_INSTALL_DIR}/int8v2") From a3bf41eafe9469f3becbf3ac46bba5620aa0225d Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 16:26:40 +0800 Subject: [PATCH 06/21] fix some comment --- test/cpp/fluid/mkldnn/CMakeLists.txt | 8 ++++---- .../cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 754080b6b9c07..343906a1110ef 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -11,11 +11,11 @@ cc_test( enforce generated_static_op) -set(BF32_CPU_QUANTIZE_PASS_TEST_APP "test_mkldnn_cpu_quantize_pass") -set(BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC +set(CPU_QUANTIZE_PASS_TEST_APP "test_analyzer_cpu_quantize_pass") +set(CPU_QUANTIZE_PASS_TEST_APP_SRC "test_mkldnn_cpu_quantize_pass.cc") - inference_analysis_api_test_build(${BF32_CPU_QUANTIZE_PASS_TEST_APP} - ${BF32_CPU_QUANTIZE_PASS_TEST_APP_SRC}) + inference_analysis_api_test_build(${CPU_QUANTIZE_PASS_TEST_APP} + ${CPU_QUANTIZE_PASS_TEST_APP_SRC}) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index a7261827e2f27..2f3fc7c2ddb9e 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -1,4 +1,4 @@ -/* Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +/* Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ limitations under the License. */ #include #include -#include "paddle/fluid/inference/api/paddle_analysis_config.h" #include "test/cpp/inference/api/tester_helper.h" #include "paddle/fluid/framework/ir/pass.h" @@ -103,19 +102,21 @@ TEST(cpuQuantizePass, ConvReLU6) { for (const auto &pass : PreGraphPasses) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); - if (pass == "fc_fuse_pass") { - pass_->Set("use_gpu", new bool(false)); - }else if(pass == "cpu_quantize_pass"){ + if(pass == "cpu_quantize_pass"){ pass_->Set("quant_var_scales", scales); }; graph.reset(pass_->Apply(graph.release())); } + int fused_conv2d_num = 0; for (auto* node : graph->Nodes()) { if(node->IsOp() && node->Op() && node->Op()->Type() =="fused_conv2d"){ CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) << "Attr fuse_beta must equal to 6."; + fused_conv2d_num++; }; }; + CHECK_GT(fused_conv2d_num, 0) + << "Graph must contain fused_conv2d"; } From 8c8767b0069fd81db5593a11d34065b1152743b5 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Mon, 14 Aug 2023 18:12:14 +0800 Subject: [PATCH 07/21] fix comment --- test/cpp/fluid/mkldnn/CMakeLists.txt | 18 ++++++++--- .../mkldnn/test_mkldnn_cpu_quantize_pass.cc | 32 +++++++++---------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 343906a1110ef..616a3414561c5 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -11,11 +11,19 @@ cc_test( enforce generated_static_op) -set(CPU_QUANTIZE_PASS_TEST_APP "test_analyzer_cpu_quantize_pass") -set(CPU_QUANTIZE_PASS_TEST_APP_SRC - "test_mkldnn_cpu_quantize_pass.cc") - inference_analysis_api_test_build(${CPU_QUANTIZE_PASS_TEST_APP} - ${CPU_QUANTIZE_PASS_TEST_APP_SRC}) +cc_test( + test_analyzer_cpu_quantize_pass + SRCS test_mkldnn_cpu_quantize_pass.cc + DEPS executor + op_registry + conv2d_op + activation_op + cpu_quantize_pass + phi + scope + device_context + enforce + generated_static_op) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 2f3fc7c2ddb9e..78839a5603b76 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -15,9 +15,8 @@ limitations under the License. */ #include #include #include - -#include "test/cpp/inference/api/tester_helper.h" - +#include +#include "paddle/fluid/framework/ir/fuse_pass_base.h" #include "paddle/fluid/framework/ir/pass.h" #include "paddle/fluid/framework/ir/pass_tester_helper.h" #include "paddle/fluid/platform/enforce.h" @@ -55,6 +54,7 @@ const std::vector PreGraphPasses({ "cpu_quantize_placement_pass", "cpu_quantize_pass", }); + TEST(cpuQuantizePass, ConvReLU6) { paddle::framework::ProgramDesc prog; auto* block = prog.MutableBlock(0); @@ -82,18 +82,18 @@ TEST(cpuQuantizePass, ConvReLU6) { relu6_op->SetOutput("Out", {"relu-Out"}); auto place = phi::CPUPlace(); - auto* scales = new VarQuantScale(); - phi::DenseTensor input_tensor; - phi::DenseTensor weight_tensor; - input_tensor.Resize({1}); - weight_tensor.Resize({1}); - auto* ptr_input = input_tensor.mutable_data(place); - auto* ptr_weight = weight_tensor.mutable_data(place); - ptr_input[0] = SCALE; - ptr_weight[0] = SCALE; - - (*scales)["conv2d-X"] = std::make_pair(false, std::move(input_tensor)); - (*scales)["conv2d-Y"] = std::make_pair(false, std::move(weight_tensor)); + std::unique_ptr scales(new VarQuantScale()); + phi::DenseTensor scale_input_tensor; + phi::DenseTensor scale_weight_tensor; + scale_input_tensor.Resize({1}); + scale_weight_tensor.Resize({1}); + auto* ptr_scale_input = scale_input_tensor.mutable_data(place); + auto* ptr_scale_weight = scale_weight_tensor.mutable_data(place); + ptr_scale_input[0] = SCALE; + ptr_scale_weight[0] = SCALE; + + (*scales)["conv2d-X"] = std::make_pair(false, std::move(scale_input_tensor)); + (*scales)["conv2d-Y"] = std::make_pair(false, std::move(scale_weight_tensor)); paddle::framework::Scope scope; @@ -103,7 +103,7 @@ TEST(cpuQuantizePass, ConvReLU6) { for (const auto &pass : PreGraphPasses) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); if(pass == "cpu_quantize_pass"){ - pass_->Set("quant_var_scales", scales); + pass_->Set("quant_var_scales", scales.get()); }; graph.reset(pass_->Apply(graph.release())); } From 9c15bd9ee5a88bd73b9606f05822b5b706ff4c01 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Tue, 15 Aug 2023 09:58:20 +0800 Subject: [PATCH 08/21] modify cmake name --- test/cpp/fluid/mkldnn/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 616a3414561c5..a110b6f3114d8 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -12,7 +12,7 @@ cc_test( generated_static_op) cc_test( - test_analyzer_cpu_quantize_pass + test_mkldnn_cpu_quantize_pass SRCS test_mkldnn_cpu_quantize_pass.cc DEPS executor op_registry From 8c6b0e64899af993c75510375b4de8bf36313045 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Tue, 15 Aug 2023 10:48:10 +0800 Subject: [PATCH 09/21] Fix monileNetV2 error by modify cpu_quantize_pass --- paddle/fluid/framework/ir/mkldnn/cpu_quantize_pass.cc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/paddle/fluid/framework/ir/mkldnn/cpu_quantize_pass.cc b/paddle/fluid/framework/ir/mkldnn/cpu_quantize_pass.cc index 3bc5fe218450d..9c9ea82445d60 100644 --- a/paddle/fluid/framework/ir/mkldnn/cpu_quantize_pass.cc +++ b/paddle/fluid/framework/ir/mkldnn/cpu_quantize_pass.cc @@ -548,16 +548,6 @@ void CPUQuantizePass::QuantizeConv(Graph* graph, conv_op->Op()->SetAttr("force_fp32_output", true); } - // change threshold in bounded ReLu - if (conv_op->Op()->GetAttrIfExists("fuse_activation") == - "relu6") { - float scale_out = - PADDLE_GET_CONST(float, conv_op->Op()->GetAttr("Scale_out")); - float threshold = - PADDLE_GET_CONST(float, conv_op->Op()->GetAttr("fuse_alpha")); - conv_op->Op()->SetAttr("fuse_alpha", scale_out * threshold); - } - ++quantize_conv_count; }; From b637e613c035d68616d965992298458e27b780a4 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Tue, 15 Aug 2023 16:56:24 +0800 Subject: [PATCH 10/21] fix CI codestyle and cmakelist fused_conv2d --- test/cpp/fluid/mkldnn/CMakeLists.txt | 6 +----- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 10 ++++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index a110b6f3114d8..d170e4ef397fd 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -16,14 +16,10 @@ cc_test( SRCS test_mkldnn_cpu_quantize_pass.cc DEPS executor op_registry - conv2d_op activation_op - cpu_quantize_pass phi scope - device_context - enforce - generated_static_op) + device_context) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 78839a5603b76..d17aa6e227361 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -25,7 +25,9 @@ limitations under the License. */ #include "paddle/fluid/framework/program_desc.h" #include -using namespace std; +using std::pair; +using std::string; +using std::unordered_map; DEFINE_bool(enable_mkldnn, true, "Enable MKLDNN"); @@ -104,7 +106,7 @@ TEST(cpuQuantizePass, ConvReLU6) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); if(pass == "cpu_quantize_pass"){ pass_->Set("quant_var_scales", scales.get()); - }; + } graph.reset(pass_->Apply(graph.release())); } int fused_conv2d_num = 0; @@ -113,8 +115,8 @@ TEST(cpuQuantizePass, ConvReLU6) { CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) << "Attr fuse_beta must equal to 6."; fused_conv2d_num++; - }; - }; + } + } CHECK_GT(fused_conv2d_num, 0) << "Graph must contain fused_conv2d"; From 5f23f4af4cde4e93016ce803bd69f955ea9bcf45 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Tue, 15 Aug 2023 18:40:31 +0800 Subject: [PATCH 11/21] use clang-format and cmake-format to format code style --- test/cpp/fluid/mkldnn/CMakeLists.txt | 9 +-- .../mkldnn/test_mkldnn_cpu_quantize_pass.cc | 69 +++++++++---------- 2 files changed, 36 insertions(+), 42 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index d170e4ef397fd..20c442ba0028b 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -10,16 +10,11 @@ cc_test( device_context enforce generated_static_op) - + cc_test( test_mkldnn_cpu_quantize_pass SRCS test_mkldnn_cpu_quantize_pass.cc - DEPS executor - op_registry - activation_op - phi - scope - device_context) + DEPS executor op_registry activation_op phi scope device_context) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index d17aa6e227361..c2b7396854a87 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -12,18 +12,18 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +#include +#include #include #include #include -#include #include "paddle/fluid/framework/ir/fuse_pass_base.h" +#include "paddle/fluid/framework/ir/graph.h" #include "paddle/fluid/framework/ir/pass.h" #include "paddle/fluid/framework/ir/pass_tester_helper.h" -#include "paddle/fluid/platform/enforce.h" -#include "paddle/fluid/framework/ir/graph.h" #include "paddle/fluid/framework/op_desc.h" #include "paddle/fluid/framework/program_desc.h" -#include +#include "paddle/fluid/platform/enforce.h" using std::pair; using std::string; @@ -36,25 +36,25 @@ namespace pass { using VarQuantScale = std::unordered_map>; - + static float const SCALE = 2.f; const std::vector PreGraphPasses({ - "simplify_with_basic_ops_pass", - "quant_dequant_mkldnn_pass", - "conv_bn_fuse_pass", - "conv_eltwiseadd_bn_fuse_pass", - "conv_affine_channel_mkldnn_fuse_pass", - "conv_transpose_bn_fuse_pass", - "conv_transpose_eltwiseadd_bn_fuse_pass", - "conv_bias_mkldnn_fuse_pass", - "conv_transpose_bias_mkldnn_fuse_pass", - "conv_elementwise_add_mkldnn_fuse_pass", - "conv_activation_mkldnn_fuse_pass", - "operator_scale_onednn_fuse_pass", - "operator_unsqueeze2_onednn_fuse_pass", - "operator_reshape2_onednn_fuse_pass", - "cpu_quantize_placement_pass", - "cpu_quantize_pass", + "simplify_with_basic_ops_pass", + "quant_dequant_mkldnn_pass", + "conv_bn_fuse_pass", + "conv_eltwiseadd_bn_fuse_pass", + "conv_affine_channel_mkldnn_fuse_pass", + "conv_transpose_bn_fuse_pass", + "conv_transpose_eltwiseadd_bn_fuse_pass", + "conv_bias_mkldnn_fuse_pass", + "conv_transpose_bias_mkldnn_fuse_pass", + "conv_elementwise_add_mkldnn_fuse_pass", + "conv_activation_mkldnn_fuse_pass", + "operator_scale_onednn_fuse_pass", + "operator_unsqueeze2_onednn_fuse_pass", + "operator_reshape2_onednn_fuse_pass", + "cpu_quantize_placement_pass", + "cpu_quantize_pass", }); TEST(cpuQuantizePass, ConvReLU6) { @@ -66,7 +66,7 @@ TEST(cpuQuantizePass, ConvReLU6) { conv2d_op->SetInput("Input", {"conv2d-X"}); conv2d_op->SetInput("Filter", {"conv2d-Y"}); conv2d_op->SetOutput("Output", {"conv2d-Out"}); - + const std::vector strides({1, 1}); const std::vector paddings({1, 1}); const std::vector dilations({1, 1}); @@ -81,7 +81,7 @@ TEST(cpuQuantizePass, ConvReLU6) { relu6_op->SetType("relu6"); relu6_op->SetAttr("threshold", 6.f); relu6_op->SetInput("X", {"conv2d-Out"}); - relu6_op->SetOutput("Out", {"relu-Out"}); + relu6_op->SetOutput("Out", {"relu-Out"}); auto place = phi::CPUPlace(); std::unique_ptr scales(new VarQuantScale()); @@ -99,27 +99,26 @@ TEST(cpuQuantizePass, ConvReLU6) { paddle::framework::Scope scope; - std::unique_ptr graph(new paddle::framework::ir::Graph(prog)); + std::unique_ptr graph( + new paddle::framework::ir::Graph(prog)); (graph)->SetNotOwned(paddle::framework::ir::kParamScopeAttr, &scope); - - for (const auto &pass : PreGraphPasses) { + + for (const auto& pass : PreGraphPasses) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); - if(pass == "cpu_quantize_pass"){ - pass_->Set("quant_var_scales", scales.get()); + if (pass == "cpu_quantize_pass") { + pass_->Set("quant_var_scales", scales.get()); } graph.reset(pass_->Apply(graph.release())); } int fused_conv2d_num = 0; for (auto* node : graph->Nodes()) { - if(node->IsOp() && node->Op() && node->Op()->Type() =="fused_conv2d"){ - CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) - << "Attr fuse_beta must equal to 6."; - fused_conv2d_num++; + if (node->IsOp() && node->Op() && node->Op()->Type() == "fused_conv2d") { + CHECK_EQ(node->Op()->GetAttrIfExists("fuse_beta"), 6) + << "Attr fuse_beta must equal to 6."; + fused_conv2d_num++; } } - CHECK_GT(fused_conv2d_num, 0) - << "Graph must contain fused_conv2d"; - + CHECK_GT(fused_conv2d_num, 0) << "Graph must contain fused_conv2d"; } } // namespace pass From 9a485550c9e87982ea0fd238a9f63a791a9048bf Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 10:46:03 +0800 Subject: [PATCH 12/21] add pass in cc_test to fix pass not register and not use smart point to avoid dump error --- test/cpp/fluid/mkldnn/CMakeLists.txt | 9 ++++++++- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 20c442ba0028b..f5c2a7bb754da 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -14,7 +14,14 @@ cc_test( cc_test( test_mkldnn_cpu_quantize_pass SRCS test_mkldnn_cpu_quantize_pass.cc - DEPS executor op_registry activation_op phi scope device_context) + DEPS executor + op_registry + activation_op + pass + ${GLOB_PASS_LIB} + phi + scope + device_context) set(TEST_MKLDNN_CACHING_DEPS op_registry diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index c2b7396854a87..121a2927a1ecc 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -84,7 +84,7 @@ TEST(cpuQuantizePass, ConvReLU6) { relu6_op->SetOutput("Out", {"relu-Out"}); auto place = phi::CPUPlace(); - std::unique_ptr scales(new VarQuantScale()); + VarQuantScale* scales = new VarQuantScale(); phi::DenseTensor scale_input_tensor; phi::DenseTensor scale_weight_tensor; scale_input_tensor.Resize({1}); From 9b03cb151f266c5fbc9c3e1701649688262eb6d8 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 11:27:55 +0800 Subject: [PATCH 13/21] delete get() --- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 121a2927a1ecc..a7dd7890962b4 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -106,7 +106,7 @@ TEST(cpuQuantizePass, ConvReLU6) { for (const auto& pass : PreGraphPasses) { auto pass_ = paddle::framework::ir::PassRegistry::Instance().Get(pass); if (pass == "cpu_quantize_pass") { - pass_->Set("quant_var_scales", scales.get()); + pass_->Set("quant_var_scales", scales); } graph.reset(pass_->Apply(graph.release())); } From 76014d880374f60d1e1f2be521659e166d1b01bc Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 14:19:31 +0800 Subject: [PATCH 14/21] fix not register pass --- test/cpp/fluid/mkldnn/CMakeLists.txt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index f5c2a7bb754da..32fabc6aa1dd3 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -17,8 +17,22 @@ cc_test( DEPS executor op_registry activation_op - pass - ${GLOB_PASS_LIB} + simplify_with_basic_ops_pass + quant_dequant_mkldnn_pass + conv_bn_fuse_pass + conv_eltwiseadd_bn_fuse_pass + conv_affine_channel_mkldnn_fuse_pass + conv_transpose_bn_fuse_pass + conv_transpose_eltwiseadd_bn_fuse_pass + conv_bias_mkldnn_fuse_pass + conv_transpose_bias_mkldnn_fuse_pass + conv_elementwise_add_mkldnn_fuse_pass + conv_activation_mkldnn_fuse_pass + operator_scale_onednn_fuse_pass + operator_unsqueeze2_onednn_fuse_pass + operator_reshape2_onednn_fuse_pass + cpu_quantize_placement_pass + cpu_quantize_pass phi scope device_context) From 9f137055cd880735ca055f195fe975ede0a585f2 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 14:58:41 +0800 Subject: [PATCH 15/21] remove no target pass --- test/cpp/fluid/mkldnn/CMakeLists.txt | 4 ---- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 4 ---- 2 files changed, 8 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 32fabc6aa1dd3..76f4ee19ae568 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -20,14 +20,10 @@ cc_test( simplify_with_basic_ops_pass quant_dequant_mkldnn_pass conv_bn_fuse_pass - conv_eltwiseadd_bn_fuse_pass conv_affine_channel_mkldnn_fuse_pass - conv_transpose_bn_fuse_pass - conv_transpose_eltwiseadd_bn_fuse_pass conv_bias_mkldnn_fuse_pass conv_transpose_bias_mkldnn_fuse_pass conv_elementwise_add_mkldnn_fuse_pass - conv_activation_mkldnn_fuse_pass operator_scale_onednn_fuse_pass operator_unsqueeze2_onednn_fuse_pass operator_reshape2_onednn_fuse_pass diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index a7dd7890962b4..aeb42abda6de2 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -42,12 +42,8 @@ const std::vector PreGraphPasses({ "simplify_with_basic_ops_pass", "quant_dequant_mkldnn_pass", "conv_bn_fuse_pass", - "conv_eltwiseadd_bn_fuse_pass", "conv_affine_channel_mkldnn_fuse_pass", - "conv_transpose_bn_fuse_pass", - "conv_transpose_eltwiseadd_bn_fuse_pass", "conv_bias_mkldnn_fuse_pass", - "conv_transpose_bias_mkldnn_fuse_pass", "conv_elementwise_add_mkldnn_fuse_pass", "conv_activation_mkldnn_fuse_pass", "operator_scale_onednn_fuse_pass", From 35e0f24e9e3313c2a0621d06aebf1c2c16faca5b Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 16:04:28 +0800 Subject: [PATCH 16/21] remove conv_transpose_bias_mkldnn_fuse_pass --- test/cpp/fluid/mkldnn/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 76f4ee19ae568..eb984444514f9 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -22,8 +22,8 @@ cc_test( conv_bn_fuse_pass conv_affine_channel_mkldnn_fuse_pass conv_bias_mkldnn_fuse_pass - conv_transpose_bias_mkldnn_fuse_pass conv_elementwise_add_mkldnn_fuse_pass + conv_activation_mkldnn_fuse_pass operator_scale_onednn_fuse_pass operator_unsqueeze2_onednn_fuse_pass operator_reshape2_onednn_fuse_pass From 02288a9c087bf5ea81d3a7a1a8374e40fcc0fb63 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Wed, 16 Aug 2023 21:23:09 +0800 Subject: [PATCH 17/21] add all pass_library in makefile --- test/cpp/fluid/mkldnn/CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index eb984444514f9..098d90a8e279b 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -10,7 +10,18 @@ cc_test( device_context enforce generated_static_op) - +pass_library(simplify_with_basic_ops_pass base) +pass_library(quant_dequant_mkldnn_pass inference DIR mkldnn) +pass_library(conv_bn_fuse_pass inference) +pass_library(conv_affine_channel_mkldnn_fuse_pass inference DIR mkldnn) +pass_library(conv_bias_mkldnn_fuse_pass inference DIR mkldnn) +pass_library(conv_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn) +pass_library(conv_activation_mkldnn_fuse_pass inference DIR mkldnn) +pass_library(operator_scale_onednn_fuse_pass inference DIR mkldnn) +pass_library(operator_unsqueeze2_onednn_fuse_pass inference DIR mkldnn) +pass_library(operator_reshape2_onednn_fuse_pass inference DIR mkldnn) +pass_library(cpu_quantize_placement_pass base DIR mkldnn) +pass_library(cpu_quantize_pass inference DIR mkldnn) cc_test( test_mkldnn_cpu_quantize_pass SRCS test_mkldnn_cpu_quantize_pass.cc From 473f67bea8aebdf3c88da2ad4c03c7d42a583a6c Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Thu, 17 Aug 2023 09:23:51 +0800 Subject: [PATCH 18/21] remove useless and not found pass --- test/cpp/fluid/mkldnn/CMakeLists.txt | 21 ------------------- .../mkldnn/test_mkldnn_cpu_quantize_pass.cc | 9 -------- 2 files changed, 30 deletions(-) diff --git a/test/cpp/fluid/mkldnn/CMakeLists.txt b/test/cpp/fluid/mkldnn/CMakeLists.txt index 098d90a8e279b..9144b500a3924 100644 --- a/test/cpp/fluid/mkldnn/CMakeLists.txt +++ b/test/cpp/fluid/mkldnn/CMakeLists.txt @@ -10,34 +10,13 @@ cc_test( device_context enforce generated_static_op) -pass_library(simplify_with_basic_ops_pass base) -pass_library(quant_dequant_mkldnn_pass inference DIR mkldnn) -pass_library(conv_bn_fuse_pass inference) -pass_library(conv_affine_channel_mkldnn_fuse_pass inference DIR mkldnn) -pass_library(conv_bias_mkldnn_fuse_pass inference DIR mkldnn) -pass_library(conv_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn) -pass_library(conv_activation_mkldnn_fuse_pass inference DIR mkldnn) -pass_library(operator_scale_onednn_fuse_pass inference DIR mkldnn) -pass_library(operator_unsqueeze2_onednn_fuse_pass inference DIR mkldnn) -pass_library(operator_reshape2_onednn_fuse_pass inference DIR mkldnn) -pass_library(cpu_quantize_placement_pass base DIR mkldnn) -pass_library(cpu_quantize_pass inference DIR mkldnn) cc_test( test_mkldnn_cpu_quantize_pass SRCS test_mkldnn_cpu_quantize_pass.cc DEPS executor op_registry activation_op - simplify_with_basic_ops_pass - quant_dequant_mkldnn_pass - conv_bn_fuse_pass - conv_affine_channel_mkldnn_fuse_pass - conv_bias_mkldnn_fuse_pass - conv_elementwise_add_mkldnn_fuse_pass conv_activation_mkldnn_fuse_pass - operator_scale_onednn_fuse_pass - operator_unsqueeze2_onednn_fuse_pass - operator_reshape2_onednn_fuse_pass cpu_quantize_placement_pass cpu_quantize_pass phi diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index aeb42abda6de2..03055b87d9512 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -39,16 +39,7 @@ using VarQuantScale = static float const SCALE = 2.f; const std::vector PreGraphPasses({ - "simplify_with_basic_ops_pass", - "quant_dequant_mkldnn_pass", - "conv_bn_fuse_pass", - "conv_affine_channel_mkldnn_fuse_pass", - "conv_bias_mkldnn_fuse_pass", - "conv_elementwise_add_mkldnn_fuse_pass", "conv_activation_mkldnn_fuse_pass", - "operator_scale_onednn_fuse_pass", - "operator_unsqueeze2_onednn_fuse_pass", - "operator_reshape2_onednn_fuse_pass", "cpu_quantize_placement_pass", "cpu_quantize_pass", }); From 51ba26c027df2320e501737cecb47c23089a3954 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Thu, 17 Aug 2023 11:10:26 +0800 Subject: [PATCH 19/21] add USE_PASS to register pass --- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 03055b87d9512..3e2df0bd304b1 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -110,3 +110,6 @@ TEST(cpuQuantizePass, ConvReLU6) { } // namespace pass } // namespace paddle +USE_PASS(conv_activation_mkldnn_fuse_pass); +USE_PASS(cpu_quantize_placement_pass); +USE_PASS(cpu_quantize_pass); \ No newline at end of file From 0fcf0ee00f06a9a894c04c102018827b51431ac7 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Thu, 17 Aug 2023 12:08:21 +0800 Subject: [PATCH 20/21] add space for format --- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 3e2df0bd304b1..0190a9a423823 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -110,6 +110,7 @@ TEST(cpuQuantizePass, ConvReLU6) { } // namespace pass } // namespace paddle + USE_PASS(conv_activation_mkldnn_fuse_pass); USE_PASS(cpu_quantize_placement_pass); USE_PASS(cpu_quantize_pass); \ No newline at end of file From 622e67adcf3c1c5061f11d670d6f5a39831a4f36 Mon Sep 17 00:00:00 2001 From: zhanglirong1999 <1695074375@qq.com> Date: Thu, 17 Aug 2023 12:32:39 +0800 Subject: [PATCH 21/21] add space for format --- test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc index 0190a9a423823..6f1ac7e56f304 100644 --- a/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc +++ b/test/cpp/fluid/mkldnn/test_mkldnn_cpu_quantize_pass.cc @@ -113,4 +113,4 @@ TEST(cpuQuantizePass, ConvReLU6) { USE_PASS(conv_activation_mkldnn_fuse_pass); USE_PASS(cpu_quantize_placement_pass); -USE_PASS(cpu_quantize_pass); \ No newline at end of file +USE_PASS(cpu_quantize_pass);