From 6a628f705689b0ee3644b76d1903b3610d8d8203 Mon Sep 17 00:00:00 2001 From: Maksim Kutakov Date: Wed, 23 Aug 2023 16:58:38 +0200 Subject: [PATCH] [CPU] Fix deconvolution default primitive search algo (#19261) * Fix deconvolution default primitive search * Add dedicated test --- src/plugins/intel_cpu/src/nodes/deconv.cpp | 8 +++--- .../convolution_backprop_data.cpp | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/plugins/intel_cpu/src/nodes/deconv.cpp b/src/plugins/intel_cpu/src/nodes/deconv.cpp index a7664b809a3..34cfbfa6986 100644 --- a/src/plugins/intel_cpu/src/nodes/deconv.cpp +++ b/src/plugins/intel_cpu/src/nodes/deconv.cpp @@ -991,18 +991,16 @@ void Deconvolution::prepareParams() { key.stride, key.dilation, key.paddingL, key.paddingR, key.attr, engine); } - auto anyDeconvItpd = anyDeconvDesc; - - if (anyDeconvItpd) { + if (anyDeconvDesc) { if (key.isInt8) { - auto prim_desc = deconvolution_forward::primitive_desc(itpd.get()); + auto prim_desc = deconvolution_forward::primitive_desc(anyDeconvDesc.get()); execPtr = std::make_shared(prim_desc, key.inp0->getDnnlDesc(), key.inp1->getDnnlDesc(), key.out->getDnnlDesc(), engine); } else { - auto prim_desc = convolution_backward_data::primitive_desc(itpd.get()); + auto prim_desc = convolution_backward_data::primitive_desc(anyDeconvDesc.get()); execPtr = std::make_shared(prim_desc, key.inp0->getDnnlDesc(), key.inp1->getDnnlDesc(), diff --git a/src/plugins/intel_cpu/tests/functional/single_layer_tests/convolution_backprop_data.cpp b/src/plugins/intel_cpu/tests/functional/single_layer_tests/convolution_backprop_data.cpp index 29701ac04c7..56cb5ab9502 100755 --- a/src/plugins/intel_cpu/tests/functional/single_layer_tests/convolution_backprop_data.cpp +++ b/src/plugins/intel_cpu/tests/functional/single_layer_tests/convolution_backprop_data.cpp @@ -869,6 +869,33 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_AutoPadding_FP32, DeconvolutionLayerCPU ::testing::Values(cpuEmptyPluginConfig)), DeconvolutionLayerCPUTest::getTestCaseName); +const auto deconvParams_AutoPadding_2D_AMX = ::testing::Combine( + ::testing::ValuesIn(deconvAmxKernels2d), + ::testing::ValuesIn(deconvAmxStrides2d), + ::testing::ValuesIn(padBegins2d), + ::testing::ValuesIn(padEnds2d), + ::testing::ValuesIn(dilations2d), + ::testing::Values(256), + ::testing::Values(ngraph::op::PadType::SAME_UPPER, ngraph::op::PadType::SAME_LOWER), + ::testing::ValuesIn(emptyOutputPadding) +); + +const DeconvInputData inputs_2D_AutoPadding_AMX = { + InputShape{{-1, 512, -1, -1}, {{ 1, 512, 32, 51}, { 1, 512, 68, 101}}}, + ngraph::helpers::InputLayerType::PARAMETER, + {{64, 101}, {135, 202}} +}; + +INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_AutoPadding_AMX_BF16, DeconvolutionLayerCPUTest, + ::testing::Combine( + deconvParams_AutoPadding_2D_AMX, + ::testing::Values(inputs_2D_AutoPadding_AMX), + ::testing::Values(ElementType::f32), + ::testing::Values(emptyFusingSpec), + ::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_nspc_brgconv_amx})), + ::testing::Values(cpuBF16PluginConfig)), + DeconvolutionLayerCPUTest::getTestCaseName); + } // namespace } // namespace CPULayerTestsDefinitions