[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
|
||||
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()
|
||||
|
||||
addIeTargetTest(
|
||||
|
@ -5,7 +5,9 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "any_copy.hpp"
|
||||
#include "common/gna_target.hpp"
|
||||
#include "gna_infer_request.hpp"
|
||||
#include "gna_mock_api.hpp"
|
||||
#include "gna_plugin.hpp"
|
||||
#include "ngraph_functions/builders.hpp"
|
||||
|
||||
@ -30,6 +32,7 @@ struct PWLExtraSegmentsParamsWithConv {
|
||||
ngraph::helpers::ActivationTypes activation_type;
|
||||
size_t expected_segments_num;
|
||||
bool use_pooling;
|
||||
std::map<std::string, std::string> config;
|
||||
};
|
||||
|
||||
const std::unordered_map<ngraph::helpers::ActivationTypes, std::string> kNGraphActivationMapForTests{
|
||||
@ -93,7 +96,7 @@ public:
|
||||
void SetUp() override;
|
||||
|
||||
protected:
|
||||
InferenceEngine::CNNNetwork cnn_network_;
|
||||
InferenceEngine::CNNNetwork m_cnn_network;
|
||||
};
|
||||
|
||||
std::string GNAPWLExtraSegmentsTestFixture::getTestCaseName(
|
||||
@ -103,10 +106,14 @@ std::string GNAPWLExtraSegmentsTestFixture::getTestCaseName(
|
||||
result << "ConvolutionType=" << params.conv_params.convolution_type << "_";
|
||||
result << "ActivationType=" << params.activation_type << "_";
|
||||
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();
|
||||
}
|
||||
|
||||
void GNAPWLExtraSegmentsTestFixture::SetUp() {
|
||||
PWLExtraSegmentsParamsWithConv tests_params;
|
||||
auto params = GetParam();
|
||||
const auto& conv_params = params.conv_params;
|
||||
const auto& precision = params.precision;
|
||||
@ -151,9 +158,15 @@ void GNAPWLExtraSegmentsTestFixture::SetUp() {
|
||||
auto function = std::make_shared<ov::Model>(ov::ResultVector({result}),
|
||||
ov::ParameterVector({input}),
|
||||
"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;
|
||||
|
||||
const ov::Shape kInput1D = {1, 1, 1, 8};
|
||||
@ -166,23 +179,23 @@ const std::vector<size_t> kPadEnd1D = {0, 0};
|
||||
const ConvolutionParameters kConvolutionParams1D =
|
||||
{kDnnConvolutional1dOp, kInput1D, kKernel1D, kStride1D, kDilation1D, kOutChanneldsNum1D, kPadBegin1D, kPadEnd1D};
|
||||
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams = {kConvolutionParams1D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Relu,
|
||||
2,
|
||||
false};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams = {kConvolutionParams1D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Relu,
|
||||
2,
|
||||
true};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams = {kConvolutionParams1D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Sigmoid,
|
||||
12,
|
||||
true};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams_30 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 2, false, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams_30 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 2, true, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams_30 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams_30 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_30};
|
||||
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithoutPoolParams_35 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DReluWithPoolParams_35 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithoutPoolParams_35 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution1DSigmoidWithPoolParams_35 =
|
||||
{kConvolutionParams1D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_35};
|
||||
|
||||
const ov::Shape kInput2D = {1, 8, 20, 16};
|
||||
const ov::Shape kKernel2D = {1, 1};
|
||||
@ -194,46 +207,64 @@ const std::vector<size_t> kPadEnd2D = {0, 0};
|
||||
const ConvolutionParameters kConvolutionParams2D =
|
||||
{kDnnConvolutional2dOp, kInput2D, kKernel2D, kStride2D, kDilation2D, kOutChanneldsNum2D, kPadBegin2D, kPadEnd2D};
|
||||
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams = {kConvolutionParams2D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Relu,
|
||||
4,
|
||||
false};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams = {kConvolutionParams2D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Relu,
|
||||
4,
|
||||
true};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams = {kConvolutionParams2D,
|
||||
kPrecision32,
|
||||
ngraph::helpers::ActivationTypes::Sigmoid,
|
||||
12,
|
||||
true};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams_30 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams_30 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams_30 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_30};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams_30 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_30};
|
||||
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithoutPoolParams_35 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, false, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DReluWithPoolParams_35 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Relu, 4, true, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithoutPoolParams_35 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, false, configs_35};
|
||||
const PWLExtraSegmentsParamsWithConv kConvolution2DSigmoidWithPoolParams_35 =
|
||||
{kConvolutionParams2D, kPrecision32, ngraph::helpers::ActivationTypes::Sigmoid, 12, true, configs_35};
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv1DTests,
|
||||
GNAPWLExtraSegmentsTestFixture,
|
||||
::testing::Values(kConvolution1DReluWithoutPoolParams,
|
||||
kConvolution1DReluWithPoolParams,
|
||||
kConvolution1DSigmoidWithoutPoolParams,
|
||||
kConvolution1DSigmoidWithPoolParams),
|
||||
::testing::Values(kConvolution1DReluWithoutPoolParams_30,
|
||||
kConvolution1DReluWithPoolParams_30,
|
||||
kConvolution1DSigmoidWithoutPoolParams_30,
|
||||
kConvolution1DSigmoidWithPoolParams_30,
|
||||
kConvolution1DReluWithoutPoolParams_35,
|
||||
kConvolution1DReluWithPoolParams_35,
|
||||
kConvolution1DSigmoidWithoutPoolParams_35,
|
||||
kConvolution1DSigmoidWithPoolParams_35),
|
||||
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(GNAPWLExtraSegmentsConv2DTests,
|
||||
GNAPWLExtraSegmentsTestFixture,
|
||||
::testing::Values(kConvolution2DReluWithoutPoolParams,
|
||||
kConvolution2DReluWithPoolParams,
|
||||
kConvolution2DSigmoidWithoutPoolParams,
|
||||
kConvolution2DSigmoidWithPoolParams),
|
||||
::testing::Values(kConvolution2DReluWithoutPoolParams_30,
|
||||
kConvolution2DReluWithPoolParams_30,
|
||||
kConvolution2DSigmoidWithoutPoolParams_30,
|
||||
kConvolution2DSigmoidWithPoolParams_30,
|
||||
kConvolution2DReluWithoutPoolParams_35,
|
||||
kConvolution2DReluWithPoolParams_35,
|
||||
kConvolution2DSigmoidWithoutPoolParams_35,
|
||||
kConvolution2DSigmoidWithPoolParams_35),
|
||||
GNAPWLExtraSegmentsTestFixture::getTestCaseName);
|
||||
|
||||
TEST_P(GNAPWLExtraSegmentsTestFixture, check_number_of_segments) {
|
||||
auto params = GetParam();
|
||||
const ov::AnyMap& gna_config = {ov::intel_gna::execution_mode(ov::intel_gna::ExecutionMode::SW_EXACT)};
|
||||
GNAPluginForPWLExtraSegmentsTest plugin(ov::any_copy(gna_config));
|
||||
auto target_name = params.config["GNA_EXEC_TARGET"];
|
||||
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));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user