[CPU]GroupConvolutionLayer CPU test for AMX (#13539)
This commit is contained in:
parent
d1f1fa2b39
commit
e79db660ce
@ -202,6 +202,29 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
using ExpectFallbackGroupConvolutionLayerCPUTest = GroupConvolutionLayerCPUTest;
|
||||
|
||||
TEST_P(ExpectFallbackGroupConvolutionLayerCPUTest, CompareWithRefs) {
|
||||
run();
|
||||
if (isBias) {
|
||||
checkBiasFusing(compiledModel);
|
||||
}
|
||||
ASSERT_TRUE(!selectedType.empty()) << "Node type is not defined.";
|
||||
auto function = compiledModel.get_runtime_model();
|
||||
for (const auto &node : function->get_ops()) {
|
||||
const auto & rtInfo = node->get_rt_info();
|
||||
auto getExecValue = [&rtInfo](const std::string & paramName) -> std::string {
|
||||
auto it = rtInfo.find(paramName);
|
||||
IE_ASSERT(rtInfo.end() != it);
|
||||
return it->second.as<std::string>();
|
||||
};
|
||||
if ("Convolution" == getExecValue(ExecGraphInfoSerialization::LAYER_TYPE)) {
|
||||
auto primType = getExecValue(ExecGraphInfoSerialization::IMPL_TYPE);
|
||||
ASSERT_TRUE(selectedType != primType) << "primType is unexpected: " << primType;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(GroupConvolutionLayerCPUTest, CompareWithRefs) {
|
||||
run();
|
||||
if (isBias) {
|
||||
@ -217,6 +240,7 @@ std::vector<groupConvLayerCPUTestParamsSet> filterParamsSetForDevice(std::vector
|
||||
std::vector<groupConvLayerCPUTestParamsSet> resParamsSet;
|
||||
const int cpuParamsIndex = 1;
|
||||
const int selectedTypeIndex = 3;
|
||||
const int configIndex = 3;
|
||||
|
||||
for (auto param : paramsSet) {
|
||||
auto cpuParams = std::get<cpuParamsIndex>(param);
|
||||
@ -230,12 +254,27 @@ std::vector<groupConvLayerCPUTestParamsSet> filterParamsSetForDevice(std::vector
|
||||
continue;
|
||||
if (selectedTypeStr.find("avx512") != std::string::npos && !with_cpu_x86_avx512f())
|
||||
continue;
|
||||
|
||||
if (selectedTypeStr.find("amx") != std::string::npos && !with_cpu_x86_avx512_core_amx())
|
||||
continue;
|
||||
auto additionalConfig = std::get<configIndex>(param);
|
||||
if (additionalConfig.count(PluginConfigParams::KEY_ENFORCE_BF16) &&
|
||||
PluginConfigParams::YES == additionalConfig[PluginConfigParams::KEY_ENFORCE_BF16] &&
|
||||
!with_cpu_x86_bfloat16()) {
|
||||
continue;
|
||||
}
|
||||
resParamsSet.push_back(param);
|
||||
}
|
||||
|
||||
return resParamsSet;
|
||||
}
|
||||
|
||||
std::vector<CPUSpecificParams> filterCPUInfoForDeviceSupportBF16(std::vector<CPUSpecificParams> CPUParams) {
|
||||
std::vector<CPUSpecificParams> resParamsSet;
|
||||
if (with_cpu_x86_bfloat16()) {
|
||||
return filterCPUInfoForDevice(CPUParams);
|
||||
}
|
||||
return resParamsSet;
|
||||
}
|
||||
/* ===================== */
|
||||
|
||||
/* COMMON PARAMS */
|
||||
@ -485,6 +524,570 @@ INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_3D_Gemm_BF16, GroupConvolutionLayerCPUT
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_1D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_1d = {{3}};
|
||||
const std::vector<SizeVector> strides_brgemm_1d = { {1}, {2} };
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_1d = { {0}, {1} };
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_1d = { {0} };
|
||||
const std::vector<SizeVector> dilations_brgemm_1d = { {1}, {2} };
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_2D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_2d = {{3, 3}};
|
||||
const std::vector<SizeVector> strides_brgemm_2d = {{1, 1}, {2, 2}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_2d = {{0, 0}, {1, 1}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_2d = {{0, 0}};
|
||||
const std::vector<SizeVector> dilations_brgemm_2d = {{1, 1}, {2, 2}};
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_3D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_3d = {{3, 3, 3}};
|
||||
const std::vector<SizeVector> strides_brgemm_3d = {{1, 1, 1}, {2, 2, 2}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_3d = {{0, 0, 0}, {1, 1, 1}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_3d = {{0, 0, 0}};
|
||||
const std::vector<SizeVector> dilations_brgemm_3d = {{1, 1, 1}, {2, 2, 2}};
|
||||
/* ============= */
|
||||
|
||||
const SizeVector numGroups_brgemm_Blocked = {2};
|
||||
|
||||
/* ============= GroupConvolution (brgemm 1D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_1D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_1d),
|
||||
::testing::ValuesIn(strides_brgemm_1d),
|
||||
::testing::ValuesIn(padBegins_brgemm_1d),
|
||||
::testing::ValuesIn(padEnds_brgemm_1d),
|
||||
::testing::ValuesIn(dilations_brgemm_1d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1D_BF16 = {
|
||||
conv_avx512_1D_nspc_brgconv
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1D_FP32 = {
|
||||
conv_avx512_1D_nspc_brgconv
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1d = {
|
||||
{{}, {{ 2, 64, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7 },
|
||||
{ 1, 64, 9 }
|
||||
}
|
||||
},
|
||||
{
|
||||
//dynamic shapes
|
||||
{ {-1, 64, -1} },
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7 },
|
||||
{ 1, 64, 14 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1D_FP32_fusingBias, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1D_FP32)),
|
||||
::testing::Values(fusingAddPerChannel),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_1D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution (brgemm_2D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_2D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_2d),
|
||||
::testing::ValuesIn(strides_brgemm_2d),
|
||||
::testing::ValuesIn(padBegins_brgemm_2d),
|
||||
::testing::ValuesIn(padEnds_brgemm_2d),
|
||||
::testing::ValuesIn(dilations_brgemm_2d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_2D_FP32 = {
|
||||
conv_avx512_2D_nspc_brgconv
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_2D_BF16 = {
|
||||
conv_avx512_2D_nspc_brgconv,
|
||||
conv_avx512_2D_nspc_brgconv_amx
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_2d = {
|
||||
{{}, {{ 1, 64, 7, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_2D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_2d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_2d_dynBatch = {
|
||||
{
|
||||
//dynamic shapes
|
||||
{ {1, 10}, 64, {7, 9}, {7, 9}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 },
|
||||
{ 3, 64, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(nightly_GroupConv_brgemm_2D_FP32_dynBatch, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_2d_dynBatch),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_2d_cache = {
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 1, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 },
|
||||
{ 1, 64, 7, 7 },
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(nightly_GroupConv_brgemm_2D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_2d_cache),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_2D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_2d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_2D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution (brgemm_3D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_3D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_3d),
|
||||
::testing::ValuesIn(strides_brgemm_3d),
|
||||
::testing::ValuesIn(padBegins_brgemm_3d),
|
||||
::testing::ValuesIn(padEnds_brgemm_3d),
|
||||
::testing::ValuesIn(dilations_brgemm_3d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_3D_FP32 = {
|
||||
conv_avx512_3D_nspc_brgconv
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_3D_BF16 = {
|
||||
conv_avx512_3D_nspc_brgconv,
|
||||
conv_avx512_3D_nspc_brgconv_amx
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_3d = {
|
||||
{{}, {{ 1, 64, 7, 7, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}, -1},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7, 7 },
|
||||
{ 1, 64, 9, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_3D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_3D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_3d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_3D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_3D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_3D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_3d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_3D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_1x1_1D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_1x1_1d = {{1}};
|
||||
const std::vector<SizeVector> strides_brgemm_1x1_1d = { {1}, {2} };
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_1x1_1d = { {0}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_1x1_1d = { {0} };
|
||||
const std::vector<SizeVector> dilations_brgemm_1x1_1d = { {1}, {2} };
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_1x1_2D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_1x1_2d = {{1, 1}};
|
||||
const std::vector<SizeVector> strides_brgemm_1x1_2d = {{1, 1}, {2, 2}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_1x1_2d = {{0, 0}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_1x1_2d = {{0, 0}};
|
||||
const std::vector<SizeVector> dilations_brgemm_1x1_2d = {{1, 1}, {2, 2}};
|
||||
|
||||
/* ============= GroupConvolution params (brgemm_1x1_3D) ============= */
|
||||
const std::vector<SizeVector> kernels_brgemm_1x1_3d = {{1, 1, 1}};
|
||||
const std::vector<SizeVector> strides_brgemm_1x1_3d = {{1, 1, 1}, {2, 2, 2}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padBegins_brgemm_1x1_3d = {{0, 0, 0}};
|
||||
const std::vector<std::vector<ptrdiff_t>> padEnds_brgemm_1x1_3d = {{0, 0, 0}};
|
||||
const std::vector<SizeVector> dilations_brgemm_1x1_3d = {{1, 1, 1}, {2, 2, 2}};
|
||||
/* ============= */
|
||||
|
||||
const SizeVector numGroups_brgemm_1x1_Blocked = {2};
|
||||
|
||||
/* ============= GroupConvolution (brgemm_1x1 1D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_1x1_1D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_1x1_1d),
|
||||
::testing::ValuesIn(strides_brgemm_1x1_1d),
|
||||
::testing::ValuesIn(padBegins_brgemm_1x1_1d),
|
||||
::testing::ValuesIn(padEnds_brgemm_1x1_1d),
|
||||
::testing::ValuesIn(dilations_brgemm_1x1_1d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_1x1_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_1D_BF16 = {
|
||||
conv_avx512_1D_1x1_nspc_brgconv,
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_1D_FP32 = {
|
||||
conv_avx512_1D_1x1_nspc_brgconv,
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1x1_1d = {
|
||||
{{}, {{ 2, 64, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7 },
|
||||
{ 1, 64, 9 }
|
||||
}
|
||||
},
|
||||
{
|
||||
//dynamic shapes
|
||||
{ {-1, 64, -1} },
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7 },
|
||||
{ 1, 64, 14 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_1D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_1D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_1D_FP32_fusingBias, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_1D_FP32)),
|
||||
::testing::Values(fusingAddPerChannel),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_1D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_1D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_1d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_1x1_1D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution (brgemm_1x1_2D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_1x1_2D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_1x1_2d),
|
||||
::testing::ValuesIn(strides_brgemm_1x1_2d),
|
||||
::testing::ValuesIn(padBegins_brgemm_1x1_2d),
|
||||
::testing::ValuesIn(padEnds_brgemm_1x1_2d),
|
||||
::testing::ValuesIn(dilations_brgemm_1x1_2d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_1x1_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_2D_FP32 = {
|
||||
conv_avx512_2D_1x1_nspc_brgconv
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_2D_BF16 = {
|
||||
conv_avx512_2D_1x1_nspc_brgconv,
|
||||
conv_avx512_2D_1x1_nspc_brgconv_amx
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1x1_2d = {
|
||||
{{}, {{ 1, 64, 7, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_2D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_2d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1x1_2d_dynBatch = {
|
||||
{
|
||||
//dynamic shapes
|
||||
{ {1, 10}, 64, {7, 9}, {7, 9}},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 },
|
||||
{ 3, 64, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(nightly_GroupConv_brgemm_1x1_2D_FP32_dynBatch, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_2d_dynBatch),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1x1_2d_cache = {
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}},
|
||||
{ //target static shapes
|
||||
{ 1, 64, 7, 7 },
|
||||
{ 1, 64, 9, 9 },
|
||||
{ 1, 64, 7, 7 },
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(nightly_GroupConv_brgemm_1x1_2D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_2d_cache),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_2D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_2D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_2D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_2d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_1x1_2D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= GroupConvolution (brgemm_1x1_3D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_brgemm_1x1_3D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels_brgemm_1x1_3d),
|
||||
::testing::ValuesIn(strides_brgemm_1x1_3d),
|
||||
::testing::ValuesIn(padBegins_brgemm_1x1_3d),
|
||||
::testing::ValuesIn(padEnds_brgemm_1x1_3d),
|
||||
::testing::ValuesIn(dilations_brgemm_1x1_3d),
|
||||
::testing::ValuesIn(numOutChannels_Blocked),
|
||||
::testing::ValuesIn(numGroups_brgemm_1x1_Blocked),
|
||||
::testing::Values(ngraph::op::PadType::EXPLICIT)
|
||||
);
|
||||
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_3D_FP32 = {
|
||||
conv_avx512_3D_1x1_nspc_brgconv,
|
||||
};
|
||||
|
||||
const std::vector<CPUSpecificParams> CPUParams_brgemm_1x1_3D_BF16 = {
|
||||
conv_avx512_3D_1x1_nspc_brgconv,
|
||||
conv_avx512_3D_1x1_nspc_brgconv_amx,
|
||||
};
|
||||
|
||||
std::vector<InputShape> inputShapes_brgemm_1x1_3d = {
|
||||
{{}, {{ 1, 64, 7, 7, 7 }}},
|
||||
{
|
||||
//dynamic shapes
|
||||
{-1, 64, -1, {1, 200}, -1},
|
||||
{ //target static shapes
|
||||
{ 2, 64, 7, 7, 7 },
|
||||
{ 1, 64, 9, 9, 9 }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_3D_FP32, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_3D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_3d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDevice(CPUParams_brgemm_1x1_3D_FP32)),
|
||||
::testing::ValuesIn(fusingParamsSet),
|
||||
::testing::Values(cpuEmptyPluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_GroupConv_brgemm_1x1_3D_BF16, GroupConvolutionLayerCPUTest,
|
||||
::testing::Combine(
|
||||
::testing::Combine(
|
||||
groupConvParams_ExplicitPadding_brgemm_1x1_3D,
|
||||
::testing::Values(ElementType::f32),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::Values(ElementType::undefined),
|
||||
::testing::ValuesIn(inputShapes_brgemm_1x1_3d),
|
||||
::testing::Values(CommonTestUtils::DEVICE_CPU)),
|
||||
::testing::ValuesIn(filterCPUInfoForDeviceSupportBF16(CPUParams_brgemm_1x1_3D_BF16)),
|
||||
::testing::ValuesIn(fusingParamsSetBF16),
|
||||
::testing::Values(cpuBF16PluginConfig)),
|
||||
GroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
|
||||
|
||||
/* ============= GroupConvolution (1D) ============= */
|
||||
const auto groupConvParams_ExplicitPadding_1D = ::testing::Combine(
|
||||
::testing::ValuesIn(kernels1d),
|
||||
@ -981,6 +1584,7 @@ std::vector<groupConvLayerCPUTestParamsSet> generateSingleGroupConvCPUTestCases(
|
||||
const VecConfigRelatedParams vecPrcConnectParamsFP32 = {ConfigRelatedParams{cpuEmptyPluginConfig, fusingParamsSet}};
|
||||
const VecConfigRelatedParams vecPrcConnectParams = {ConfigRelatedParams{cpuEmptyPluginConfig, fusingParamsSet},
|
||||
ConfigRelatedParams{cpuBF16PluginConfig, fusingParamsSetBF16}};
|
||||
const VecConfigRelatedParams vecPrcConnectParamsBF16 = {ConfigRelatedParams{cpuBF16PluginConfig, fusingParamsSetBF16}};
|
||||
|
||||
const VecConfigRelatedParams vecPrcConnectParamsFP32Default = {ConfigRelatedParams{cpuEmptyPluginConfig, VecFusingParams{emptyFusingSpec}}};
|
||||
const VecConfigRelatedParams vecPrcConnectParamsDefault = {ConfigRelatedParams{cpuEmptyPluginConfig, VecFusingParams{emptyFusingSpec}},
|
||||
@ -1266,6 +1870,30 @@ INSTANTIATE_TEST_SUITE_P(smoke_JIT_AVX512_DW_GroupConv, GroupConvolutionLayerCPU
|
||||
/* ============= JIT AVX5122 PLANAR Convolution (not supported with groups) ============= */
|
||||
/* ============================================= */
|
||||
|
||||
/* ============= brgemm GroupConvolution test, expect fallback to other implementation ============= */
|
||||
const std::vector<CPUSpecificParams> CPUParams_Fallback_Brgemm_2D = {
|
||||
conv_avx512_2D_nspc_brgconv,
|
||||
conv_avx512_2D_nspc_brgconv_amx
|
||||
};
|
||||
const std::vector<CPUSpecificParams> CPUParams_Fallback_Brgemm_1D_Small_Shape = {
|
||||
conv_avx512_1D_nspc_brgconv_amx
|
||||
};
|
||||
const std::vector<groupConvLayerCPUTestParamsSet> BRGEMM_EXPECT_FALLBACK_GroupConvTestCases = generateSingleGroupConvCPUTestCases(
|
||||
// channel <= 16
|
||||
// https://github.com/openvinotoolkit/oneDNN/blob/6df930dab5ab0a7dfaea6100acd03b479e2fa0a8/src/cpu/x64/jit_brgemm_conv_utils.cpp#L1712
|
||||
makeSingleGroupConvCPUTestCases({3, 3}, {1, 1}, {1, 1}, {0, 0}, {0, 0}, ngraph::op::PadType::EXPLICIT,
|
||||
4, 1, {5, 5}, 16, 16, CPUParams_Fallback_Brgemm_2D, vecPrcConnectParamsFP32),
|
||||
// small shape on amx
|
||||
// https://github.com/openvinotoolkit/oneDNN/blob/6df930dab5ab0a7dfaea6100acd03b479e2fa0a8/src/cpu/x64/jit_brgemm_conv_utils.cpp#L1719
|
||||
makeSingleGroupConvCPUTestCases({3}, {1}, {1}, {0}, {0}, ngraph::op::PadType::EXPLICIT,
|
||||
4, 1, {3}, 32, 32, CPUParams_Fallback_Brgemm_1D_Small_Shape, vecPrcConnectParamsBF16)
|
||||
);
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_BRGEMM_EXPECT_FALLBACK_GroupConv, ExpectFallbackGroupConvolutionLayerCPUTest, ::testing::ValuesIn(filterParamsSetForDevice
|
||||
(BRGEMM_EXPECT_FALLBACK_GroupConvTestCases)), ExpectFallbackGroupConvolutionLayerCPUTest::getTestCaseName);
|
||||
|
||||
/* ============= brgemm GroupConvolution test, expect fallback to other implementation, end ============= */
|
||||
|
||||
} // namespace
|
||||
|
||||
} // namespace CPULayerTestsDefinitions
|
||||
|
@ -110,6 +110,8 @@ namespace CPUTestUtils {
|
||||
const auto conv_avx512_2D_1x1_nspc = CPUSpecificParams{{nhwc}, {nhwc}, {"jit_avx512_1x1"}, "jit_avx512_1x1"};
|
||||
const auto conv_avx512_2D_1x1_nspc_brgconv = CPUSpecificParams{{nhwc}, {nhwc}, {"brgconv_avx512_1x1"}, "brgconv_avx512_1x1"};
|
||||
const auto conv_avx512_2D_1x1_nspc_brgconv_amx = CPUSpecificParams{{nhwc}, {nhwc}, {"brgconv_avx512_amx_1x1"}, "brgconv_avx512_amx_1x1"};
|
||||
const auto conv_avx512_3D_1x1_nspc_brgconv = CPUSpecificParams{{ndhwc}, {ndhwc}, {"brgconv_avx512_1x1"}, "brgconv_avx512_1x1"};
|
||||
const auto conv_avx512_3D_1x1_nspc_brgconv_amx = CPUSpecificParams{{ndhwc}, {ndhwc}, {"brgconv_avx512_amx_1x1"}, "brgconv_avx512_amx_1x1"};
|
||||
|
||||
const auto conv_winograd = CPUSpecificParams{{nChw16c}, {nChw16c}, {"jit_avx512_winograd"}, "jit_avx512_winograd"};
|
||||
} // namespace CPUTestUtils
|
||||
|
Loading…
Reference in New Issue
Block a user