[GNA] Fix UT for adding extra segments to PWL-s after convolution (#16732)
This commit is contained in:
parent
435a79a2a3
commit
d6f7e5e84d
@ -14,7 +14,7 @@ endif()
|
|||||||
|
|
||||||
# TODO: fix CVS-71010 and remove BUILD_SHARED_LIBS
|
# TODO: fix CVS-71010 and remove BUILD_SHARED_LIBS
|
||||||
if(NOT BUILD_SHARED_LIBS)
|
if(NOT BUILD_SHARED_LIBS)
|
||||||
set(exclude_path EXCLUDED_SOURCE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/(gna_api_stub|gna_wait_test|gna_export_import_test|gna_infer_request_test|gna_plugin_load_network_test|gna_mock_api_initializer).cpp")
|
set(exclude_path EXCLUDED_SOURCE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/(gna_api_stub|gna_wait_test|gna_export_import_test|gna_infer_request_test|gna_plugin_load_network_test|gna_mock_api_initializer|gna_extra_pwl_segments_tests).cpp")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
addIeTargetTest(
|
addIeTargetTest(
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include "any_copy.hpp"
|
#include "any_copy.hpp"
|
||||||
|
#include "common/gna_target.hpp"
|
||||||
#include "gna_infer_request.hpp"
|
#include "gna_infer_request.hpp"
|
||||||
|
#include "gna_mock_api.hpp"
|
||||||
#include "gna_plugin.hpp"
|
#include "gna_plugin.hpp"
|
||||||
#include "ngraph_functions/builders.hpp"
|
#include "ngraph_functions/builders.hpp"
|
||||||
|
|
||||||
@ -30,6 +32,7 @@ struct PWLExtraSegmentsParamsWithConv {
|
|||||||
ngraph::helpers::ActivationTypes activation_type;
|
ngraph::helpers::ActivationTypes activation_type;
|
||||||
size_t expected_segments_num;
|
size_t expected_segments_num;
|
||||||
bool use_pooling;
|
bool use_pooling;
|
||||||
|
std::map<std::string, std::string> config;
|
||||||
};
|
};
|
||||||
|
|
||||||
const std::unordered_map<ngraph::helpers::ActivationTypes, std::string> kNGraphActivationMapForTests{
|
const std::unordered_map<ngraph::helpers::ActivationTypes, std::string> kNGraphActivationMapForTests{
|
||||||
@ -93,7 +96,7 @@ public:
|
|||||||
void SetUp() override;
|
void SetUp() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
InferenceEngine::CNNNetwork cnn_network_;
|
InferenceEngine::CNNNetwork m_cnn_network;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string GNAPWLExtraSegmentsTestFixture::getTestCaseName(
|
std::string GNAPWLExtraSegmentsTestFixture::getTestCaseName(
|
||||||
@ -103,10 +106,14 @@ std::string GNAPWLExtraSegmentsTestFixture::getTestCaseName(
|
|||||||
result << "ConvolutionType=" << params.conv_params.convolution_type << "_";
|
result << "ConvolutionType=" << params.conv_params.convolution_type << "_";
|
||||||
result << "ActivationType=" << params.activation_type << "_";
|
result << "ActivationType=" << params.activation_type << "_";
|
||||||
result << "PoolingOn=" << (params.use_pooling ? "yes" : "no");
|
result << "PoolingOn=" << (params.use_pooling ? "yes" : "no");
|
||||||
|
for (auto const& config_entry : params.config) {
|
||||||
|
result << "_config_entry=" << config_entry.first << "_" << config_entry.second;
|
||||||
|
}
|
||||||
return result.str();
|
return result.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GNAPWLExtraSegmentsTestFixture::SetUp() {
|
void GNAPWLExtraSegmentsTestFixture::SetUp() {
|
||||||
|
PWLExtraSegmentsParamsWithConv tests_params;
|
||||||
auto params = GetParam();
|
auto params = GetParam();
|
||||||
const auto& conv_params = params.conv_params;
|
const auto& conv_params = params.conv_params;
|
||||||
const auto& precision = params.precision;
|
const auto& precision = params.precision;
|
||||||
@ -151,9 +158,15 @@ void GNAPWLExtraSegmentsTestFixture::SetUp() {
|
|||||||
auto function = std::make_shared<ov::Model>(ov::ResultVector({result}),
|
auto function = std::make_shared<ov::Model>(ov::ResultVector({result}),
|
||||||
ov::ParameterVector({input}),
|
ov::ParameterVector({input}),
|
||||||
"convolution_with_activation_exrta_segments");
|
"convolution_with_activation_exrta_segments");
|
||||||
cnn_network_ = InferenceEngine::CNNNetwork(function);
|
m_cnn_network = InferenceEngine::CNNNetwork(function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::map<std::string, std::string> configs_30 = {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"},
|
||||||
|
{"GNA_EXEC_TARGET", "GNA_TARGET_3_0"}};
|
||||||
|
|
||||||
|
const std::map<std::string, std::string> configs_35 = {{"GNA_DEVICE_MODE", "GNA_SW_EXACT"},
|
||||||
|
{"GNA_EXEC_TARGET", "GNA_TARGET_3_5"}};
|
||||||
|
|
||||||
auto kPrecision32 = ov::element::f32;
|
auto kPrecision32 = ov::element::f32;
|
||||||
|
|
||||||
const ov::Shape kInput1D = {1, 1, 1, 8};
|
const ov::Shape kInput1D = {1, 1, 1, 8};
|
||||||
@ -166,23 +179,23 @@ const std::vector<size_t> kPadEnd1D = {0, 0};
|
|||||||
const ConvolutionParameters kConvolutionParams1D =
|
const ConvolutionParameters kConvolutionParams1D =
|
||||||
{kDnnConvolutional1dOp, kInput1D, kKernel1D, kStride1D, kDilation1D, kOutChanneldsNum1D, kPadBegin1D, kPadEnd1D};
|
{kDnnConvolutional1dOp, kInput1D, kKernel1D, kStride1D, kDilation1D, kOutChanneldsNum1D, kPadBegin1D, kPadEnd1D};
|
||||||
|
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams = {kConvolutionParams1D,
|
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams_30 =
|
||||||
kPrecision32,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 2, false, configs_30};
|
||||||
ngraph::helpers::ActivationTypes::Relu,
|
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams_30 =
|
||||||
2,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 2, true, configs_30};
|
||||||
false};
|
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams_30 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams = {kConvolutionParams1D,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_30};
|
||||||
kPrecision32,
|
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams_30 =
|
||||||
ngraph::helpers::ActivationTypes::Relu,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_30};
|
||||||
2,
|
|
||||||
true};
|
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams_35 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams =
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_35};
|
||||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false};
|
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams_35 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams = {kConvolutionParams1D,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_35};
|
||||||
kPrecision32,
|
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams_35 =
|
||||||
ngraph::helpers::ActivationTypes::Sigmoid,
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_35};
|
||||||
12,
|
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams_35 =
|
||||||
true};
|
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_35};
|
||||||
|
|
||||||
const ov::Shape kInput2D = {1, 8, 20, 16};
|
const ov::Shape kInput2D = {1, 8, 20, 16};
|
||||||
const ov::Shape kKernel2D = {1, 1};
|
const ov::Shape kKernel2D = {1, 1};
|
||||||
@ -194,46 +207,64 @@ const std::vector<size_t> kPadEnd2D = {0, 0};
|
|||||||
const ConvolutionParameters kConvolutionParams2D =
|
const ConvolutionParameters kConvolutionParams2D =
|
||||||
{kDnnConvolutional2dOp, kInput2D, kKernel2D, kStride2D, kDilation2D, kOutChanneldsNum2D, kPadBegin2D, kPadEnd2D};
|
{kDnnConvolutional2dOp, kInput2D, kKernel2D, kStride2D, kDilation2D, kOutChanneldsNum2D, kPadBegin2D, kPadEnd2D};
|
||||||
|
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams = {kConvolutionParams2D,
|
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams_30 =
|
||||||
kPrecision32,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_30};
|
||||||
ngraph::helpers::ActivationTypes::Relu,
|
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams_30 =
|
||||||
4,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_30};
|
||||||
false};
|
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams_30 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams = {kConvolutionParams2D,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_30};
|
||||||
kPrecision32,
|
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams_30 =
|
||||||
ngraph::helpers::ActivationTypes::Relu,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_30};
|
||||||
4,
|
|
||||||
true};
|
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams_35 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams =
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_35};
|
||||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false};
|
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams_35 =
|
||||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams = {kConvolutionParams2D,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_35};
|
||||||
kPrecision32,
|
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams_35 =
|
||||||
ngraph::helpers::ActivationTypes::Sigmoid,
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_35};
|
||||||
12,
|
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams_35 =
|
||||||
true};
|
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_35};
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv1DTests,
|
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv1DTests,
|
||||||
GNAPWLExtraSegmentsTestFixture,
|
GNAPWLExtraSegmentsTestFixture,
|
||||||
::testing::Values(kConvolution1DReluWithoutPoolParams,
|
::testing::Values(kConvolution1DReluWithoutPoolParams_30,
|
||||||
kConvolution1DReluWithPoolParams,
|
kConvolution1DReluWithPoolParams_30,
|
||||||
kConvolution1DSigmoidWithoutPoolParams,
|
kConvolution1DSigmoidWithoutPoolParams_30,
|
||||||
kConvolution1DSigmoidWithPoolParams),
|
kConvolution1DSigmoidWithPoolParams_30,
|
||||||
|
kConvolution1DReluWithoutPoolParams_35,
|
||||||
|
kConvolution1DReluWithPoolParams_35,
|
||||||
|
kConvolution1DSigmoidWithoutPoolParams_35,
|
||||||
|
kConvolution1DSigmoidWithPoolParams_35),
|
||||||
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv2DTests,
|
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv2DTests,
|
||||||
GNAPWLExtraSegmentsTestFixture,
|
GNAPWLExtraSegmentsTestFixture,
|
||||||
::testing::Values(kConvolution2DReluWithoutPoolParams,
|
::testing::Values(kConvolution2DReluWithoutPoolParams_30,
|
||||||
kConvolution2DReluWithPoolParams,
|
kConvolution2DReluWithPoolParams_30,
|
||||||
kConvolution2DSigmoidWithoutPoolParams,
|
kConvolution2DSigmoidWithoutPoolParams_30,
|
||||||
kConvolution2DSigmoidWithPoolParams),
|
kConvolution2DSigmoidWithPoolParams_30,
|
||||||
|
kConvolution2DReluWithoutPoolParams_35,
|
||||||
|
kConvolution2DReluWithPoolParams_35,
|
||||||
|
kConvolution2DSigmoidWithoutPoolParams_35,
|
||||||
|
kConvolution2DSigmoidWithPoolParams_35),
|
||||||
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
||||||
|
|
||||||
TEST_P(GNAPWLExtraSegmentsTestFixture, check_number_of_segments) {
|
TEST_P(GNAPWLExtraSegmentsTestFixture, check_number_of_segments) {
|
||||||
auto params = GetParam();
|
auto params = GetParam();
|
||||||
const ov::AnyMap& gna_config = {ov::intel_gna::execution_mode(ov::intel_gna::ExecutionMode::SW_EXACT)};
|
auto target_name = params.config["GNA_EXEC_TARGET"];
|
||||||
GNAPluginForPWLExtraSegmentsTest plugin(ov::any_copy(gna_config));
|
auto target_device = ov::intel_gna::target::StringToDevice(target_name);
|
||||||
|
auto target_gna = ov::intel_gna::target::DeviceToGna(target_device);
|
||||||
|
|
||||||
EXPECT_NO_THROW(plugin.LoadNetwork(cnn_network_));
|
GNACppApi enableMocks;
|
||||||
|
EXPECT_CALL(enableMocks, Gna2DeviceGetVersion(testing::_, testing::_))
|
||||||
|
.WillOnce(testing::Invoke([=](uint32_t deviceIndex, enum Gna2DeviceVersion* deviceVersion) {
|
||||||
|
*deviceVersion = target_gna;
|
||||||
|
return Gna2StatusSuccess;
|
||||||
|
}));
|
||||||
|
|
||||||
|
GNAPluginForPWLExtraSegmentsTest plugin(params.config);
|
||||||
|
|
||||||
|
EXPECT_NO_THROW(plugin.LoadNetwork(m_cnn_network));
|
||||||
EXPECT_NO_THROW(plugin.Test(params.expected_segments_num));
|
EXPECT_NO_THROW(plugin.Test(params.expected_segments_num));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user