diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/auto_batching/auto_batching_tests.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/auto_batching/auto_batching_tests.cpp new file mode 100644 index 00000000000..ab999b07b23 --- /dev/null +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/auto_batching/auto_batching_tests.cpp @@ -0,0 +1,18 @@ +// Copyright (C) 2018-2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// +#include + +const std::vector get_vs_set{ true, false }; +const std::vector num_streams{ 1, 2 }; +const std::vector num_requests{ 1, 3, 8, 9, 16, 64 }; +const std::vector num_batch{ 1, 4, 8, 16, 32, 64, 128, 256 }; + +INSTANTIATE_TEST_SUITE_P(smoke_AutoBatching_CPU, AutoBatching_Test, + ::testing::Combine( + ::testing::Values(CommonTestUtils::DEVICE_CPU), + ::testing::ValuesIn(get_vs_set), + ::testing::ValuesIn(num_streams), + ::testing::ValuesIn(num_requests), + ::testing::ValuesIn(num_batch)), + AutoBatching_Test::getTestCaseName); diff --git a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp index c40ab0ca365..f0ff09c50c2 100644 --- a/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp +++ b/inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/detection_output.cpp @@ -57,6 +57,8 @@ const auto params3Inputs = ::testing::Combine( ); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput3In, DetectionOutputLayerTest, params3Inputs, DetectionOutputLayerTest::getTestCaseName); +//INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput3In_Hetero, DetectionOutputLayerTestWithAutoBatching, +// params3Inputs, DetectionOutputLayerTestWithAutoBatching::getTestCaseName); /* =============== 5 inputs cases =============== */ @@ -81,5 +83,7 @@ const auto params5Inputs = ::testing::Combine( ); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput5In, DetectionOutputLayerTest, params5Inputs, DetectionOutputLayerTest::getTestCaseName); +//INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput5In_Hetero, DetectionOutputLayerTestWithAutoBatching, +// params5Inputs, DetectionOutputLayerTestWithAutoBatching::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp index 7be886fbaad..caba33e5db8 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/single_layer_tests/detection_output.cpp @@ -57,6 +57,8 @@ const auto params3Inputs = ::testing::Combine( ); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput3In, DetectionOutputLayerTest, params3Inputs, DetectionOutputLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput3In_HETERO, DetectionOutputLayerTestWithAutoBatching, + params3Inputs, DetectionOutputLayerTestWithAutoBatching::getTestCaseName); /* =============== 5 inputs cases =============== */ @@ -81,5 +83,7 @@ const auto params5Inputs = ::testing::Combine( ); INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput5In, DetectionOutputLayerTest, params5Inputs, DetectionOutputLayerTest::getTestCaseName); +INSTANTIATE_TEST_SUITE_P(smoke_DetectionOutput5In_Hetero, DetectionOutputLayerTestWithAutoBatching, + params5Inputs, DetectionOutputLayerTestWithAutoBatching::getTestCaseName); } // namespace diff --git a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp index 31cfd4b79af..bd84cee25a6 100644 --- a/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp +++ b/inference-engine/tests/functional/shared_test_classes/include/shared_test_classes/single_layer/detection_output.hpp @@ -69,4 +69,10 @@ class DetectionOutputLayerTest : public testing::WithParamInterface& obj); + protected: + void SetUp() override; + }; } // namespace LayerTestsDefinitions diff --git a/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp b/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp index 02a1655d56c..ac7b89d1c88 100644 --- a/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp +++ b/inference-engine/tests/functional/shared_test_classes/src/single_layer/detection_output.cpp @@ -27,10 +27,6 @@ std::string DetectionOutputLayerTest::getTestCaseName(const testing::TestParamIn inShapes.resize(3); } - for (size_t i = 0; i < inShapes.size(); i++) { - inShapes[i][0] = batch; - } - std::ostringstream result; result << "IS = { "; result << "LOC=" << CommonTestUtils::vec2str(inShapes[0]) << "_"; @@ -148,8 +144,50 @@ void DetectionOutputLayerTest::SetUp() { auto params = ngraph::builder::makeParams(ngraph::element::f32, inShapes); auto paramOuts = ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)); + auto detOut = ngraph::builder::makeDetectionOutput(paramOuts, attrs); ngraph::ResultVector results{std::make_shared(detOut)}; function = std::make_shared(results, params, "DetectionOutput"); } + +std::string DetectionOutputLayerTestWithAutoBatching::getTestCaseName(const testing::TestParamInfo& obj) { + return DetectionOutputLayerTest::getTestCaseName(obj) + "_WITH_AUTO_BATCH"; +} + +void DetectionOutputLayerTestWithAutoBatching::SetUp() { + DetectionOutputAttributes commonAttrs; + ParamsWhichSizeDepends specificAttrs; + size_t batch; + std::tie(commonAttrs, specificAttrs, batch, attrs.objectness_score, targetDevice) = this->GetParam(); + + std::tie(attrs.num_classes, attrs.background_label_id, attrs.top_k, attrs.keep_top_k, attrs.code_type, attrs.nms_threshold, attrs.confidence_threshold, + attrs.clip_after_nms, attrs.clip_before_nms, attrs.decrease_label_id) = commonAttrs; + + inShapes.resize(numInputs); + std::tie(attrs.variance_encoded_in_target, attrs.share_location, attrs.normalized, attrs.input_height, attrs.input_width, + inShapes[idxLocation], inShapes[idxConfidence], inShapes[idxPriors], inShapes[idxArmConfidence], inShapes[idxArmLocation]) = specificAttrs; + + if (inShapes[idxArmConfidence].empty()) { + inShapes.resize(3); + } + + auto params = ngraph::builder::makeParams(ngraph::element::f32, inShapes); + auto paramOuts = ngraph::helpers::convert2OutputVector(ngraph::helpers::castOps2Nodes(params)); + + // no-op with Eltwise that adds zeros + // (so that we can tests Auto-Batching's HETERO code-path that splits the DetectionOutput and the rest of the network) + ngraph::OutputVector outs; + for (int i = 0; i < inShapes.size(); i++) { + auto shape = inShapes[i]; + auto memory_constant = ngraph::builder::makeConstant(ngraph::element::f32, shape, + std::vector(0, ngraph::shape_size(shape))); + auto values = std::make_shared(memory_constant, "memory"); + auto add = ngraph::builder::makeEltwise(paramOuts[i], values, ngraph::helpers::EltwiseTypes::ADD); + outs.push_back(add->output(0)); + } + auto detOut = ngraph::builder::makeDetectionOutput(outs, attrs); + ngraph::ResultVector results{std::make_shared(detOut)}; + function = std::make_shared(results, params, "EltWiseWithDetectionOutput"); +} + } // namespace LayerTestsDefinitions