From 5ffa2cd5e3d9c27df1b1299963198ca2fbaa653b Mon Sep 17 00:00:00 2001 From: Aleksandr Korolev Date: Mon, 2 Nov 2020 16:29:59 +0300 Subject: [PATCH] [IE TESTS] Split Layer Test refactoring (#2915) Co-authored-by: kora6 --- .../single_layer_tests/split.cpp | 4 +- .../single_layer_tests/split.cpp | 17 +++++- .../single_layer_tests/split.cpp | 1 + .../single_layer_tests/split.cpp | 16 +++++- .../single_layer_tests/split.cpp | 7 ++- .../shared/include/single_layer_tests/split.hpp | 23 +------- .../plugin/shared/src/single_layer_tests/split.cpp | 64 ++++------------------ 7 files changed, 52 insertions(+), 80 deletions(-) diff --git a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp index 5748524..fdb1901 100644 --- a/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp +++ b/docs/template_plugin/tests/functional/shared_tests_instances/single_layer_tests/split.cpp @@ -20,7 +20,9 @@ INSTANTIATE_TEST_CASE_P(NumSplitsCheck, SplitLayerTest, ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), ::testing::Values("TEMPLATE")), SplitLayerTest::getTestCaseName); + } // namespace diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp index 76cb74a..e29eef1 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/split.cpp @@ -25,7 +25,22 @@ INSTANTIATE_TEST_CASE_P(smoke_NumSplitsCheck, SplitLayerTest, ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), + ::testing::Values(CommonTestUtils::DEVICE_CPU)), + SplitLayerTest::getTestCaseName); + +INSTANTIATE_TEST_CASE_P(smoke_splitWithUnusedOutputsTest, SplitLayerTest, + ::testing::Combine( + ::testing::Values(5), + ::testing::Values(0), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({0, 3})), ::testing::Values(CommonTestUtils::DEVICE_CPU)), SplitLayerTest::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp index 65e0a25..dcaa8d5 100644 --- a/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/gna/shared_tests_instances/single_layer_tests/split.cpp @@ -26,6 +26,7 @@ INSTANTIATE_TEST_CASE_P(DISABLED_smoke_NumSplitsCheck, SplitLayerTest, ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(std::vector({30, 30})), + ::testing::Values(std::vector({})), ::testing::Values(CommonTestUtils::DEVICE_GNA)), SplitLayerTest::getTestCaseName); diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp index bcbd26b..bf70bce 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/split.cpp @@ -26,8 +26,22 @@ INSTANTIATE_TEST_CASE_P(smoke_NumSplitsCheck, SplitLayerTest, ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(InferenceEngine::Layout::ANY), - ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), ::testing::Values(CommonTestUtils::DEVICE_GPU)), SplitLayerTest::getTestCaseName); +INSTANTIATE_TEST_CASE_P(smoke_splitWithUnusedOutputsTest, SplitLayerTest, + ::testing::Combine( + ::testing::Values(5), + ::testing::Values(0), + ::testing::ValuesIn(netPrecisions), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Precision::UNSPECIFIED), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(InferenceEngine::Layout::ANY), + ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({0, 3})), + ::testing::Values(CommonTestUtils::DEVICE_GPU)), + SplitLayerTest::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp index 8ec930e..2f09030 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/split.cpp @@ -16,7 +16,7 @@ const std::vector netPrecisions = { INSTANTIATE_TEST_CASE_P(smoke_NumSplitsCheck, SplitLayerTest, ::testing::Combine( - ::testing::Values(1), + ::testing::Values(5), // TODO: 0-axis excluded // Check (status == ie::StatusCode::OK) failed: Failed to reshape Network: // Failed to infer shapes for Split layer (Split_2) with error: @@ -28,10 +28,11 @@ INSTANTIATE_TEST_CASE_P(smoke_NumSplitsCheck, SplitLayerTest, ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(InferenceEngine::Layout::ANY), ::testing::Values(std::vector({30, 30, 30, 30})), + ::testing::Values(std::vector({})), ::testing::Values(CommonTestUtils::DEVICE_MYRIAD)), SplitLayerTest::getTestCaseName); -INSTANTIATE_TEST_CASE_P(smoke_splitWithUnusedOutputsTest, splitWithUnusedOutputsTest, +INSTANTIATE_TEST_CASE_P(smoke_splitWithUnusedOutputsTest, SplitLayerTest, ::testing::Combine( ::testing::Values(5), // TODO: 0-axis excluded @@ -49,5 +50,5 @@ INSTANTIATE_TEST_CASE_P(smoke_splitWithUnusedOutputsTest, splitWithUnusedOutputs std::vector({0, 4}), std::vector({2, 3})), ::testing::Values(CommonTestUtils::DEVICE_MYRIAD)), - splitWithUnusedOutputsTest::getTestCaseName); + SplitLayerTest::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp index 65f0d4a..2bc0300 100644 --- a/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp +++ b/inference-engine/tests/functional/plugin/shared/include/single_layer_tests/split.hpp @@ -23,6 +23,7 @@ typedef std::tuple< InferenceEngine::Layout, // Input layout InferenceEngine::Layout, // Output layout std::vector, // Input shapes + std::vector, // Used outputs indices std::string // Target device name > splitParams; @@ -35,26 +36,4 @@ protected: void SetUp() override; }; -typedef std::tuple< - size_t, // Num splits - size_t, // Axis - InferenceEngine::Precision, // Net precision - InferenceEngine::Precision, // Input precision - InferenceEngine::Precision, // Output precision - InferenceEngine::Layout, // Input layout - InferenceEngine::Layout, // Output layout - std::vector, // Input shapes - std::vector, // Used outputs indices - std::string // Target device name -> splitWithUnusedOutputsParams; - -class splitWithUnusedOutputsTest : public testing::WithParamInterface, - virtual public LayerTestsUtils::LayerTestsCommon { -public: - static std::string getTestCaseName(testing::TestParamInfo obj); - -protected: - void SetUp() override; -}; - } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/split.cpp b/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/split.cpp index 0add873..2731afa 100644 --- a/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/split.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/split.cpp @@ -26,60 +26,16 @@ std::string SplitLayerTest::getTestCaseName(testing::TestParamInfo InferenceEngine::Precision netPrecision; InferenceEngine::Precision inPrc, outPrc; InferenceEngine::Layout inLayout, outLayout; - InferenceEngine::SizeVector inputShapes; - std::string targetDevice; - std::tie(numSplits, axis, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShapes, targetDevice) = obj.param; - std::ostringstream result; - result << "IS=" << CommonTestUtils::vec2str(inputShapes) << "_"; - result << "numSplits=" << numSplits << "_"; - result << "axis=" << axis << "_"; - result << "IS"; - result << "netPRC=" << netPrecision.name() << "_"; - result << "inPRC=" << inPrc.name() << "_"; - result << "outPRC=" << outPrc.name() << "_"; - result << "inL=" << inLayout << "_"; - result << "outL=" << outLayout << "_"; - result << "trgDev=" << targetDevice; - return result.str(); -} - -void SplitLayerTest::SetUp() { - SetRefMode(LayerTestsUtils::RefMode::CONSTANT_FOLDING); - size_t axis, numSplits; - std::vector inputShape; - InferenceEngine::Precision netPrecision; - std::tie(numSplits, axis, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShape, targetDevice) = this->GetParam(); - auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); - auto params = ngraph::builder::makeParams(ngPrc, {inputShape}); - auto paramOuts = ngraph::helpers::convert2OutputVector( - ngraph::helpers::castOps2Nodes(params)); - auto split = std::dynamic_pointer_cast(ngraph::builder::makeSplit(paramOuts[0], - ngPrc, numSplits, axis)); - ngraph::ResultVector results; - for (int i = 0; i < numSplits; i++) { - results.push_back(std::make_shared(split->output(i))); - } - function = std::make_shared(results, params, "split"); -} - -TEST_P(SplitLayerTest, CompareWithRefs) { - Run(); -}; - -std::string splitWithUnusedOutputsTest::getTestCaseName(testing::TestParamInfo obj) { - size_t numSplits, axis; - InferenceEngine::Precision netPrecision; - InferenceEngine::Precision inPrc, outPrc; - InferenceEngine::Layout inLayout, outLayout; - InferenceEngine::SizeVector inputShapes; - std::vector outIndices; + InferenceEngine::SizeVector inputShapes, outIndices; std::string targetDevice; std::tie(numSplits, axis, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShapes, outIndices, targetDevice) = obj.param; std::ostringstream result; result << "IS=" << CommonTestUtils::vec2str(inputShapes) << "_"; result << "numSplits=" << numSplits << "_"; result << "axis=" << axis << "_"; - result << "outIndices" << CommonTestUtils::vec2str(outIndices) << "_"; + if (!outIndices.empty()) { + result << "outIndices" << CommonTestUtils::vec2str(outIndices) << "_"; + } result << "IS"; result << "netPRC=" << netPrecision.name() << "_"; result << "inPRC=" << inPrc.name() << "_"; @@ -90,13 +46,17 @@ std::string splitWithUnusedOutputsTest::getTestCaseName(testing::TestParamInfo inputShape; + std::vector inputShape, outIndices; InferenceEngine::Precision netPrecision; - std::vector outIndices; std::tie(numSplits, axis, netPrecision, inPrc, outPrc, inLayout, outLayout, inputShape, outIndices, targetDevice) = this->GetParam(); + if (outIndices.empty()) { + for (int i = 0; i < numSplits; ++i) { + outIndices.push_back(i); + } + } auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision); auto params = ngraph::builder::makeParams(ngPrc, {inputShape}); auto paramOuts = ngraph::helpers::convert2OutputVector( @@ -110,7 +70,7 @@ void splitWithUnusedOutputsTest::SetUp() { function = std::make_shared(results, params, "split"); } -TEST_P(splitWithUnusedOutputsTest, CompareWithRefs) { +TEST_P(SplitLayerTest, CompareWithRefs) { Run(); }; -- 2.7.4