filters for arm

This commit is contained in:
Alexander Nesterov 2023-10-02 16:30:45 +02:00
parent e69866d09b
commit 6f17159022
10 changed files with 258 additions and 311 deletions

View File

@ -22,7 +22,8 @@ endif()
if(NOT (ARM OR AARCH64))
list(APPEND EXCLUDED_SOURCE_PATHS
${CMAKE_CURRENT_SOURCE_DIR}/single_layer_tests/instances/arm
${CMAKE_CURRENT_SOURCE_DIR}/subgraph_tests/src/arm)
${CMAKE_CURRENT_SOURCE_DIR}/subgraph_tests/src/arm
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/arm)
else()
# temporary disable all custom tests for ARM
list(APPEND EXCLUDED_SOURCE_PATHS
@ -41,7 +42,8 @@ endif()
if(NOT X86_64)
list(APPEND EXCLUDED_SOURCE_PATHS
${CMAKE_CURRENT_SOURCE_DIR}/single_layer_tests/instances/x64
${CMAKE_CURRENT_SOURCE_DIR}/subgraph_tests/src/x64)
${CMAKE_CURRENT_SOURCE_DIR}/subgraph_tests/src/x64
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/x64)
endif()
addIeTargetTest(

View File

@ -68,7 +68,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Planar_FP32, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Planar_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_acl_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_acl_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -78,72 +78,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Planar_FP32, DeconvolutionLayerCPUTes
::testing::ValuesIn(Planar_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_acl_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
/* ============= Deconvolution (Planar 3D) ============= */
const std::vector<DeconvInputData> Planar_3D_inputs_smoke = {
DeconvInputData{
InputShape{{}, {{ 2, 12, 7, 7, 7 }}},
ngraph::helpers::InputLayerType::CONSTANT,
{}
},
DeconvInputData{
InputShape{{-1, 12, -1, -1, -1}, {{ 2, 12, 7, 7, 7}, { 2, 12, 5, 7, 7}, { 1, 12, 9, 4, 9}}},
ngraph::helpers::InputLayerType::PARAMETER,
{{15, 15, 15}, {9, 10, 10}, {9, 9, 9}}
}
};
const std::vector<DeconvInputData> Planar_3D_inputs_nightly = {
DeconvInputData{
// -1 will result deconv use 64 to infer output shape, for 3d output shape is too big for gemm bwd kernel
// to buffer the intermedia results
InputShape{{-1, 12, {5, 9}, {4, 7}, {7, 9}}, {{ 2, 12, 7, 7, 7}, { 2, 12, 5, 7, 7}, { 1, 12, 9, 4, 9}}},
ngraph::helpers::InputLayerType::CONSTANT,
{}
},
DeconvInputData{
InputShape{{-1, 12, -1, -1, -1}, {{ 2, 12, 7, 7, 7}, { 2, 12, 5, 7, 7}, { 1, 12, 9, 4, 9}, { 2, 12, 7, 7, 7}}},
ngraph::helpers::InputLayerType::CONSTANT,
{{10, 16, 16}}
},
DeconvInputData{
InputShape{{{1, 10}, 12, 7, 7, 7}, {{ 2, 12, 7, 7, 7}, { 1, 12, 7, 7, 7}, { 3, 12, 7, 7, 7}}},
ngraph::helpers::InputLayerType::CONSTANT,
{{15, 15, 15}}
}
};
const auto convParams_ExplicitPadding_Planar_3D = ::testing::Combine(
::testing::ValuesIn(kernels3d),
::testing::ValuesIn(strides3d),
::testing::ValuesIn(padBegins3d),
::testing::ValuesIn(padEnds3d),
::testing::ValuesIn(dilations3d),
::testing::ValuesIn(numOutChannels_Planar),
::testing::Values(ngraph::op::PadType::EXPLICIT),
::testing::ValuesIn(emptyOutputPadding)
);
INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Planar_FP32, DeconvolutionLayerCPUTest,
::testing::Combine(
convParams_ExplicitPadding_Planar_3D,
::testing::ValuesIn(Planar_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_ref_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Planar_FP32, DeconvolutionLayerCPUTest,
::testing::Combine(
convParams_ExplicitPadding_Planar_3D,
::testing::ValuesIn(Planar_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_ref_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_acl_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -221,7 +156,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Blocked_FP32, DeconvolutionLayerCPUTest
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D, conv_avx2_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D, conv_avx2_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -231,7 +166,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_NSPC_INT8_AMX, DeconvolutionLayerCPUTes
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::i8),
::testing::ValuesIn({emptyFusingSpec, fusingClampRoundAddRelu}),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_nspc_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_nspc_amx})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -241,92 +176,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Blocked_FP32, DeconvolutionLayerCPUTe
::testing::ValuesIn(Blocked_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D, conv_avx2_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
/* ============= Deconvolution (Blocked 3D) ============= */
const std::vector<DeconvInputData> Blocked_3D_inputs_smoke = {
DeconvInputData{
InputShape{{}, {{ 2, 35, 7, 7, 7 }}},
ngraph::helpers::InputLayerType::CONSTANT,
{}
},
DeconvInputData{
InputShape{{-1, 35, -1, -1, -1}, {{ 1, 35, 5, 5, 5}, { 2, 35, 5, 7, 5}}},
ngraph::helpers::InputLayerType::PARAMETER,
{{7, 7, 7}, {7, 9, 7}}
}
};
const auto convParams_ExplicitPadding_Blocked_3D_nightly = ::testing::Combine(
::testing::ValuesIn(kernels3d),
::testing::ValuesIn({strides3d[0]}),
::testing::ValuesIn(padBegins3d),
::testing::ValuesIn(padEnds3d),
::testing::ValuesIn(dilations3d),
::testing::Values(32),
::testing::Values(ngraph::op::PadType::EXPLICIT),
::testing::ValuesIn(emptyOutputPadding)
);
const std::vector<DeconvInputData> Blocked_3D_inputs_nightly = {
DeconvInputData{
InputShape{{-1, 35, -1, -1, -1}, {{ 1, 35, 5, 5, 5}, { 2, 35, 5, 7, 5}, { 1, 35, 5, 5, 5}}},
ngraph::helpers::InputLayerType::CONSTANT,
{}
},
DeconvInputData{
InputShape{{-1, 35, -1, -1, -1}, {{ 1, 35, 5, 5, 5}, { 2, 35, 5, 7, 5}}},
ngraph::helpers::InputLayerType::CONSTANT,
{{7, 7, 7}}
},
DeconvInputData{
InputShape{{{1, 10}, 35, 5, 5, 5}, {{ 1, 35, 5, 5, 5}, { 2, 35, 5, 5, 5}}},
ngraph::helpers::InputLayerType::CONSTANT,
{{7, 7, 7}}
}
};
const auto convParams_ExplicitPadding_Blocked_3D = ::testing::Combine(
::testing::ValuesIn(kernels3d),
::testing::ValuesIn(strides3d),
::testing::ValuesIn(padBegins3d),
::testing::ValuesIn(padEnds3d),
::testing::ValuesIn(dilations3d),
::testing::Values(32),
::testing::Values(ngraph::op::PadType::EXPLICIT),
::testing::ValuesIn(emptyOutputPadding)
);
const auto convParams_ExplicitPadding_AMX_3D = ::testing::Combine(
::testing::ValuesIn(deconvAmxKernels3d),
::testing::ValuesIn(deconvAmxStrides3d),
::testing::ValuesIn(padBegins3d),
::testing::ValuesIn(padEnds3d),
::testing::ValuesIn(dilations3d),
::testing::Values(32),
::testing::Values(ngraph::op::PadType::EXPLICIT),
::testing::ValuesIn(emptyOutputPadding)
);
INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Blocked_FP32, DeconvolutionLayerCPUTest,
::testing::Combine(
convParams_ExplicitPadding_Blocked_3D,
::testing::ValuesIn(Blocked_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_ref_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Blocked_FP32, DeconvolutionLayerCPUTest,
::testing::Combine(
convParams_ExplicitPadding_Blocked_3D_nightly,
::testing::ValuesIn(Blocked_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_ref_3D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D, conv_avx2_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -348,7 +198,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_1x1_FP32, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -368,7 +218,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_reorder_Deconv_2D, DeconvolutionLayerCPUTest,
{{15, 15}, {9, 9}, {9, 10}, {15, 15}, {9, 9}}}),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -413,7 +263,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_AutoPadding_FP32, DeconvolutionLayerCPU
::testing::ValuesIn(inputs_2D_AutoPadding),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_acl_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_acl_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -433,26 +283,5 @@ const std::vector<DeconvInputData> inputs_3D_AutoPadding = {
},
};
const auto deconvParams_AutoPadding_3D = ::testing::Combine(
::testing::Values(kernels3d[0]),
::testing::Values(strides3d[1]),
::testing::ValuesIn(padBegins3d),
::testing::ValuesIn(padEnds3d),
::testing::ValuesIn(dilations3d),
::testing::Values(1),
::testing::Values(ngraph::op::PadType::SAME_UPPER, ngraph::op::PadType::SAME_LOWER),
::testing::ValuesIn(emptyOutputPadding)
);
INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_AutoPadding_FP32, DeconvolutionLayerCPUTest,
::testing::Combine(
deconvParams_AutoPadding_3D,
::testing::ValuesIn(inputs_3D_AutoPadding),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_ref_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
} // namespace Deconvolution
} // namespace CPULayerTestsDefinitions

View File

@ -69,7 +69,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Planar_FP32, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Planar_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -79,7 +79,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Planar_BF16, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Planar_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_2D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -89,7 +89,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Planar_FP32, DeconvolutionLayerCPUTes
::testing::ValuesIn(Planar_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -99,7 +99,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Planar_BF16, DeconvolutionLayerCPUTes
::testing::ValuesIn(Planar_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_2D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -154,7 +154,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Planar_FP32, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Planar_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -164,7 +164,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Planar_BF16, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Planar_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_3D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -174,7 +174,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Planar_FP32, DeconvolutionLayerCPUTes
::testing::ValuesIn(Planar_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -184,7 +184,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Planar_BF16, DeconvolutionLayerCPUTes
::testing::ValuesIn(Planar_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_3D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -262,7 +262,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Blocked_FP32, DeconvolutionLayerCPUTest
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D, conv_avx2_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D, conv_avx2_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -272,7 +272,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_Blocked_BF16, DeconvolutionLayerCPUTest
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -282,7 +282,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_NSPC_BF16_AMX_NO_FUSING, DeconvolutionL
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn({emptyFusingSpec}),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_nspc_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_nspc_amx})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -292,7 +292,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_NSPC_INT8_AMX, DeconvolutionLayerCPUTes
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::i8),
::testing::ValuesIn({emptyFusingSpec, fusingClampRoundAddRelu}),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_nspc_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_nspc_amx})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -302,7 +302,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Blocked_FP32, DeconvolutionLayerCPUTe
::testing::ValuesIn(Blocked_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D, conv_avx2_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D, conv_avx2_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -312,7 +312,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_2D_Blocked_BF16, DeconvolutionLayerCPUTe
::testing::ValuesIn(Blocked_2D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -387,7 +387,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Blocked_FP32, DeconvolutionLayerCPUTest
::testing::ValuesIn(Blocked_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -397,7 +397,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_Blocked_BF16, DeconvolutionLayerCPUTest
::testing::ValuesIn(Blocked_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -408,7 +408,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_NSPC_BF16_AMX_NO_FUSING, DeconvolutionL
::testing::ValuesIn(Blocked_3D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn({emptyFusingSpec}),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D_nspc_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D_nspc_amx})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -418,7 +418,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_NSPC_INT8_AMX, DeconvolutionLayerCPUTes
::testing::ValuesIn(Blocked_3D_inputs_smoke),
::testing::Values(ElementType::i8),
::testing::ValuesIn({emptyFusingSpec, fusingClampRoundAddRelu}),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D_nspc_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D_nspc_amx})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -428,7 +428,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Blocked_FP32, DeconvolutionLayerCPUTe
::testing::ValuesIn(Blocked_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -438,7 +438,7 @@ INSTANTIATE_TEST_SUITE_P(nightly_Deconv_3D_Blocked_BF16, DeconvolutionLayerCPUTe
::testing::ValuesIn(Blocked_3D_inputs_nightly),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_3D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_3D})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -460,7 +460,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_1x1_FP32, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -470,7 +470,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_1x1_BF16, DeconvolutionLayerCPUTest,
::testing::ValuesIn(Blocked_2D_inputs_smoke),
::testing::Values(ElementType::f32),
::testing::ValuesIn(fusingParamsSet),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_1x1, conv_avx2_2D_1x1})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -490,7 +490,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_reorder_Deconv_2D, DeconvolutionLayerCPUTest,
{{15, 15}, {9, 9}, {9, 10}, {15, 15}, {9, 9}}}),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -535,7 +535,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_AutoPadding_FP32, DeconvolutionLayerCPU
::testing::ValuesIn(inputs_2D_AutoPadding),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_2D, conv_avx512_2D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_2D, conv_avx512_2D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -572,7 +572,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_3D_AutoPadding_FP32, DeconvolutionLayerCPU
::testing::ValuesIn(inputs_3D_AutoPadding),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_gemm_3D, conv_avx512_3D})),
::testing::ValuesIn(filterCPUInfo({conv_gemm_3D, conv_avx512_3D})),
::testing::Values(CPUTestUtils::cpuEmptyPluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);
@ -599,7 +599,7 @@ INSTANTIATE_TEST_SUITE_P(smoke_Deconv_2D_AutoPadding_AMX_BF16, DeconvolutionLaye
::testing::Values(inputs_2D_AutoPadding_AMX),
::testing::Values(ElementType::f32),
::testing::Values(emptyFusingSpec),
::testing::ValuesIn(filterCPUInfoForDevice({conv_avx512_2D_nspc_brgconv_amx})),
::testing::ValuesIn(filterCPUInfo({conv_avx512_2D_nspc_brgconv_amx})),
::testing::Values(cpuBF16PluginConfig)),
DeconvolutionLayerCPUTest::getTestCaseName);

View File

@ -40,6 +40,17 @@ if(DEFINED ENABLE_CPU_SUBSET_TESTS_PATH)
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/fusing_test_utils.cpp
${CPU_SUBSET_TEST_ABS_PATH})
message(FATAL_ERROR ${X86_64})
if(X86_64)
message(FATAL_ERROR "248")
list(APPEND REQUIRED_OBJECT_FILES
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/x64/filter_cpu_info.cpp)
elseif(ARM OR AARCH64)
message(FATAL_ERROR "123")
list(APPEND REQUIRED_OBJECT_FILES
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/arm/filter_cpu_info.cpp)
endif()
addIeTargetTest(
NAME ${SUBSET_TARGET_NAME}
ROOT ${CMAKE_CURRENT_SOURCE_DIR}

View File

@ -17,6 +17,17 @@ function(create_target_per_test_for_directory TEST_DIR TARGET_PREFIX)
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/fusing_test_utils.cpp
)
message(FATAL_ERROR ${X86_64})
if(X86_64)
message(FATAL_ERROR "248")
list(APPEND REQUIRED_OBJECT_FILES
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/x64/filter_cpu_info.cpp)
elseif(ARM OR AARCH64)
message(FATAL_ERROR "123")
list(APPEND REQUIRED_OBJECT_FILES
${CMAKE_CURRENT_SOURCE_DIR}/test_utils/arm/filter_cpu_info.cpp)
endif()
file(GLOB LIST_OF_TEST_FILES ${TEST_DIR}/*.cpp)
# create targed for each test file in directory
foreach(TEST_FILE ${LIST_OF_TEST_FILES})

View File

@ -0,0 +1,42 @@
// Copyright (C) 2018-2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include "test_utils/cpu_test_utils.hpp"
#include "test_utils/filter_cpu_info.hpp"
#include "ie_ngraph_utils.hpp"
#include "openvino/core/type/element_type.hpp"
#include "utils/rt_info/memory_formats_attribute.hpp"
#include "utils/general_utils.h"
#include <cstdint>
namespace CPUTestUtils {
std::vector<CPUSpecificParams> filterCPUInfo(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> archCPUParams = filterCPUInfoForArch(CPUParams);
std::vector<CPUSpecificParams> deviceCPUParams = filterCPUInfoForDevice(archCPUParams);
return deviceCPUParams;
}
std::vector<CPUSpecificParams> filterCPUInfoForArch(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> resCPUParams;
const int selectedTypeIndex = 3;
for (auto param : CPUParams) {
auto selectedTypeStr = std::get<selectedTypeIndex>(param);
if (selectedTypeStr.find("acl") == std::string::npos &&
selectedTypeStr.find("ref") == std::string::npos)
continue;
resCPUParams.push_back(param);
}
return resCPUParams;
}
std::vector<CPUSpecificParams> filterCPUInfoForDevice(const std::vector<CPUSpecificParams>& CPUParams) {
return CPUParams;
}
} // namespace CPUTestUtils

View File

@ -451,29 +451,4 @@ void CheckNumberOfNodesWithType(InferenceEngine::ExecutableNetwork &execNet, con
CheckNumberOfNodesWithTypes(execNet, {nodeType}, expectedCount);
}
std::vector<CPUSpecificParams> filterCPUInfoForDevice(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> resCPUParams;
const int selectedTypeIndex = 3;
for (auto param : CPUParams) {
auto selectedTypeStr = std::get<selectedTypeIndex>(param);
if (selectedTypeStr.find("jit") != std::string::npos && !InferenceEngine::with_cpu_x86_sse42())
continue;
if (selectedTypeStr.find("sse42") != std::string::npos && !InferenceEngine::with_cpu_x86_sse42())
continue;
if (selectedTypeStr.find("avx") != std::string::npos && !InferenceEngine::with_cpu_x86_avx())
continue;
if (selectedTypeStr.find("avx2") != std::string::npos && !InferenceEngine::with_cpu_x86_avx2())
continue;
if (selectedTypeStr.find("avx512") != std::string::npos && !InferenceEngine::with_cpu_x86_avx512f())
continue;
if (selectedTypeStr.find("amx") != std::string::npos && !InferenceEngine::with_cpu_x86_avx512_core_amx())
continue;
resCPUParams.push_back(param);
}
return resCPUParams;
}
} // namespace CPUTestUtils

View File

@ -4,6 +4,7 @@
#pragma once
#include "filter_cpu_info.hpp"
#include <string>
#include "ie_system_conf.h"
#include "shared_test_classes/base/layer_test_utils.hpp"
@ -13,84 +14,6 @@
#include "ie_system_conf.h"
namespace CPUTestUtils {
typedef enum {
undef,
a,
ab,
acb,
aBc8b,
aBc16b,
abcd,
acdb,
aBcd8b,
aBcd16b,
abcde,
acdeb,
aBcde8b,
aBcde16b,
// RNN layouts
abc,
bac,
abdc,
abdec,
x = a,
nc = ab,
ncw = abc,
nchw = abcd,
ncdhw = abcde,
nwc = acb,
nhwc = acdb,
ndhwc = acdeb,
nCw8c = aBc8b,
nCw16c = aBc16b,
nChw8c = aBcd8b,
nChw16c = aBcd16b,
nCdhw8c = aBcde8b,
nCdhw16c = aBcde16b,
// RNN layouts
tnc = abc,
/// 3D RNN data tensor in the format (batch, seq_length, input channels).
ntc = bac,
/// 4D RNN states tensor in the format (num_layers, num_directions,
/// batch, state channels).
ldnc = abcd,
/// 5D RNN weights tensor in the format (num_layers, num_directions,
/// input_channels, num_gates, output_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldigo = abcde,
/// 5D RNN weights tensor in the format (num_layers, num_directions,
/// num_gates, output_channels, input_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldgoi = abdec,
/// 4D LSTM projection tensor in the format (num_layers, num_directions,
/// num_channels_in_hidden_state, num_channels_in_recurrent_projection).
ldio = abcd,
/// 4D LSTM projection tensor in the format (num_layers, num_directions,
/// num_channels_in_recurrent_projection, num_channels_in_hidden_state).
ldoi = abdc,
/// 4D RNN bias tensor in the format (num_layers, num_directions,
/// num_gates, output_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldgo = abcd,
} cpu_memory_format_t;
using CPUSpecificParams = std::tuple<
std::vector<cpu_memory_format_t>, // input memomry format
std::vector<cpu_memory_format_t>, // output memory format
std::vector<std::string>, // priority
std::string // selected primitive type
>;
enum class nodeType {
convolution,
convolutionBackpropData,
@ -178,7 +101,6 @@ const std::map<std::string, std::string> cpuBF16PluginConfig =
// utility functions
std::vector<CPUSpecificParams> filterCPUSpecificParams(const std::vector<CPUSpecificParams>& paramsVector);
std::vector<CPUSpecificParams> filterCPUInfoForDevice(const std::vector<CPUSpecificParams>& CPUParams);
void CheckNumberOfNodesWithType(const ov::CompiledModel &compiledModel, const std::string& nodeType, size_t expectedCount);
void CheckNumberOfNodesWithType(InferenceEngine::ExecutableNetwork &execNet, const std::string& nodeType, size_t expectedCount);
void CheckNumberOfNodesWithTypes(const ov::CompiledModel &compiledModel, const std::unordered_set<std::string>& nodeTypes, size_t expectedCount);

View File

@ -0,0 +1,92 @@
// Copyright (C) 2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#pragma once
#include <vector>
#include <string>
namespace CPUTestUtils {
typedef enum {
undef,
a,
ab,
acb,
aBc8b,
aBc16b,
abcd,
acdb,
aBcd8b,
aBcd16b,
abcde,
acdeb,
aBcde8b,
aBcde16b,
// RNN layouts
abc,
bac,
abdc,
abdec,
x = a,
nc = ab,
ncw = abc,
nchw = abcd,
ncdhw = abcde,
nwc = acb,
nhwc = acdb,
ndhwc = acdeb,
nCw8c = aBc8b,
nCw16c = aBc16b,
nChw8c = aBcd8b,
nChw16c = aBcd16b,
nCdhw8c = aBcde8b,
nCdhw16c = aBcde16b,
// RNN layouts
tnc = abc,
/// 3D RNN data tensor in the format (batch, seq_length, input channels).
ntc = bac,
/// 4D RNN states tensor in the format (num_layers, num_directions,
/// batch, state channels).
ldnc = abcd,
/// 5D RNN weights tensor in the format (num_layers, num_directions,
/// input_channels, num_gates, output_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldigo = abcde,
/// 5D RNN weights tensor in the format (num_layers, num_directions,
/// num_gates, output_channels, input_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldgoi = abdec,
/// 4D LSTM projection tensor in the format (num_layers, num_directions,
/// num_channels_in_hidden_state, num_channels_in_recurrent_projection).
ldio = abcd,
/// 4D LSTM projection tensor in the format (num_layers, num_directions,
/// num_channels_in_recurrent_projection, num_channels_in_hidden_state).
ldoi = abdc,
/// 4D RNN bias tensor in the format (num_layers, num_directions,
/// num_gates, output_channels).
///
/// - For LSTM cells, the gates order is input, forget, candidate
/// and output gate.
/// - For GRU cells, the gates order is update, reset and output gate.
ldgo = abcd,
} cpu_memory_format_t;
using CPUSpecificParams = std::tuple<
std::vector<cpu_memory_format_t>, // input memomry format
std::vector<cpu_memory_format_t>, // output memory format
std::vector<std::string>, // priority
std::string // selected primitive type
>;
std::vector<CPUSpecificParams> filterCPUInfo(const std::vector<CPUSpecificParams>& CPUParams);
std::vector<CPUSpecificParams> filterCPUInfoForArch(const std::vector<CPUSpecificParams>& CPUParams);
std::vector<CPUSpecificParams> filterCPUInfoForDevice(const std::vector<CPUSpecificParams>& CPUParams);
} // namespace CPUTestUtils

View File

@ -0,0 +1,63 @@
// Copyright (C) 2018-2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include "test_utils/cpu_test_utils.hpp"
#include "test_utils/filter_cpu_info.hpp"
#include "ie_ngraph_utils.hpp"
#include "openvino/core/type/element_type.hpp"
#include "utils/rt_info/memory_formats_attribute.hpp"
#include "utils/general_utils.h"
#include <cstdint>
namespace CPUTestUtils {
std::vector<CPUSpecificParams> filterCPUInfo(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> archCPUParams = filterCPUInfoForArch(CPUParams);
std::vector<CPUSpecificParams> deviceCPUParams = filterCPUInfoForDevice(archCPUParams);
return deviceCPUParams;
}
std::vector<CPUSpecificParams> filterCPUInfoForArch(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> resCPUParams;
const int selectedTypeIndex = 3;
for (auto param : CPUParams) {
auto selectedTypeStr = std::get<selectedTypeIndex>(param);
if (selectedTypeStr.find("acl") != std::string::npos)
continue;
resCPUParams.push_back(param);
}
return resCPUParams;
}
std::vector<CPUSpecificParams> filterCPUInfoForDevice(const std::vector<CPUSpecificParams>& CPUParams) {
std::vector<CPUSpecificParams> resCPUParams;
const int selectedTypeIndex = 3;
for (auto param : CPUParams) {
auto selectedTypeStr = std::get<selectedTypeIndex>(param);
if (selectedTypeStr.find("jit") != std::string::npos && !InferenceEngine::with_cpu_x86_sse42())
continue;
if (selectedTypeStr.find("sse42") != std::string::npos && !InferenceEngine::with_cpu_x86_sse42())
continue;
if (selectedTypeStr.find("avx") != std::string::npos && !InferenceEngine::with_cpu_x86_avx())
continue;
if (selectedTypeStr.find("avx2") != std::string::npos && !InferenceEngine::with_cpu_x86_avx2())
continue;
if (selectedTypeStr.find("avx512") != std::string::npos && !InferenceEngine::with_cpu_x86_avx512f())
continue;
if (selectedTypeStr.find("amx") != std::string::npos && !InferenceEngine::with_cpu_x86_avx512_core_amx())
continue;
resCPUParams.push_back(param);
}
return resCPUParams;
}
} // namespace CPUTestUtils