[GNA] added split_to_concat_multi_inputs test (#7775)
* added split_to_concat_multi_inputs test * [GNA] fixes according to comments *Deleted commented str *Updated opset for MatMul *Added gna_sw_exact mode * [GNA] Added input with n * 512 size * [GNA] Changed input gen params * rebase commit
This commit is contained in:
parent
f92ae6511b
commit
1f4aa79a01
@ -0,0 +1,46 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "subgraph_tests/split_concat_multi_inputs.hpp"
|
||||
#include "common_test_utils/test_constants.hpp"
|
||||
#include "gna/gna_config.hpp"
|
||||
|
||||
using namespace SubgraphTestsDefinitions;
|
||||
|
||||
namespace {
|
||||
std::vector<InferenceEngine::Precision> precisions = {InferenceEngine::Precision::FP32,
|
||||
InferenceEngine::Precision::FP16};
|
||||
|
||||
std::vector<std::map<std::string, std::string>> additionalConfig = {
|
||||
{
|
||||
{"GNA_DEVICE_MODE", "GNA_SW_FP32"}
|
||||
},
|
||||
{
|
||||
{"GNA_DEVICE_MODE", "GNA_SW_EXACT"}
|
||||
}
|
||||
};
|
||||
|
||||
std::vector<std::vector<size_t>> inputShapes = {
|
||||
{1, 10},
|
||||
{1, 50},
|
||||
{1, 32},
|
||||
{1, 512}
|
||||
};
|
||||
|
||||
std::vector<size_t> splitsNum = {2, 3, 4, 10};
|
||||
|
||||
std::vector<bool> isFc = {false, true};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(smoke_splitConcatMultiInputs, SplitConcatMultiInputsTest,
|
||||
::testing::Combine(
|
||||
::testing::ValuesIn(precisions),
|
||||
::testing::Values(CommonTestUtils::DEVICE_GNA),
|
||||
::testing::ValuesIn(additionalConfig),
|
||||
::testing::ValuesIn(inputShapes),
|
||||
::testing::ValuesIn(splitsNum),
|
||||
::testing::ValuesIn(isFc)),
|
||||
SplitConcatMultiInputsTest::getTestCaseName);
|
||||
} // namespace
|
@ -0,0 +1,14 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared_test_classes/subgraph/split_concat_multi_inputs.hpp"
|
||||
|
||||
namespace SubgraphTestsDefinitions {
|
||||
|
||||
TEST_P(SplitConcatMultiInputsTest, CompareWithRefs) {
|
||||
Run();
|
||||
};
|
||||
} // namespace SubgraphTestsDefinitions
|
@ -0,0 +1,42 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
#include "shared_test_classes/base/layer_test_utils.hpp"
|
||||
#include "ngraph_functions/utils/ngraph_helpers.hpp"
|
||||
#include "ngraph_functions/builders.hpp"
|
||||
|
||||
namespace SubgraphTestsDefinitions {
|
||||
|
||||
typedef std::tuple<
|
||||
InferenceEngine::Precision, // Network Precision
|
||||
std::string, // Target Device
|
||||
std::map<std::string, std::string>, // Configuration
|
||||
std::vector<size_t>, // Input Shapes
|
||||
size_t, // Num of Split outputs (concat inputs)
|
||||
bool // with FC or not
|
||||
> SplitConcatMultiInputsParams;
|
||||
|
||||
|
||||
class SplitConcatMultiInputsTest : public testing::WithParamInterface<SplitConcatMultiInputsParams>,
|
||||
public LayerTestsUtils::LayerTestsCommon {
|
||||
public:
|
||||
static std::string getTestCaseName(testing::TestParamInfo<SplitConcatMultiInputsParams> obj);
|
||||
|
||||
protected:
|
||||
void SetUp() override;
|
||||
InferenceEngine::Blob::Ptr GenerateInput(const InferenceEngine::InputInfo &info) const override;
|
||||
|
||||
float inputDataMin = 0.0;
|
||||
float inputDataMax = 0.2;
|
||||
float inputDataResolution = 1;
|
||||
int32_t seed = 1;
|
||||
};
|
||||
} // namespace SubgraphTestsDefinitions
|
@ -0,0 +1,62 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "shared_test_classes/subgraph/split_concat_multi_inputs.hpp"
|
||||
#include "ngraph_functions/builders.hpp"
|
||||
|
||||
namespace SubgraphTestsDefinitions {
|
||||
|
||||
std::string SplitConcatMultiInputsTest::getTestCaseName(testing::TestParamInfo<SplitConcatMultiInputsParams> obj) {
|
||||
std::vector<size_t> inputShape;
|
||||
size_t splitsNum;
|
||||
std::map<std::string, std::string> config;
|
||||
InferenceEngine::Precision netPrecision;
|
||||
std::string targetName;
|
||||
bool withFC;
|
||||
std::tie(netPrecision, targetName, config, inputShape, splitsNum, withFC) = obj.param;
|
||||
std::ostringstream result;
|
||||
result << "IS=" << CommonTestUtils::vec2str(inputShape) << "_";
|
||||
result << "SplitsN=" << splitsNum << "_";
|
||||
result << "netPRC=" << netPrecision.name() << "_";
|
||||
result << "trgDev=" << targetName << "_";
|
||||
result << "FC=" << withFC;
|
||||
for (auto const& configItem : config) {
|
||||
result << "_configItem=" << configItem.first << "_" << configItem.second;
|
||||
}
|
||||
return result.str();
|
||||
}
|
||||
|
||||
void SplitConcatMultiInputsTest::SetUp() {
|
||||
std::vector<size_t> inputShape;
|
||||
size_t splitsNum;
|
||||
std::map<std::string, std::string> tempConfig;
|
||||
InferenceEngine::Precision netPrecision;
|
||||
bool withFC;
|
||||
std::tie(netPrecision, targetDevice, tempConfig, inputShape, splitsNum, withFC) = this->GetParam();
|
||||
configuration.insert(tempConfig.begin(), tempConfig.end());
|
||||
|
||||
inputShape[1] *= splitsNum;
|
||||
auto ngPrc = FuncTestUtils::PrecisionUtils::convertIE2nGraphPrc(netPrecision);
|
||||
auto params = ngraph::builder::makeParams(ngPrc, {inputShape});
|
||||
|
||||
auto split = ngraph::builder::makeSplit(params[0], ngPrc, splitsNum, 1);
|
||||
ngraph::OutputVector concatInputs = split->outputs();
|
||||
|
||||
auto concat = std::make_shared<ngraph::opset7::Concat>(concatInputs, 1);
|
||||
|
||||
if (withFC) {
|
||||
auto mul_const = ngraph::builder::makeConstant<float>(ngPrc, { 10, inputShape[1] },
|
||||
CommonTestUtils::generate_float_numbers(10 * inputShape[1], -0.2f, 0.2f), false);
|
||||
auto matmul = std::make_shared<ngraph::op::MatMul>(concat, mul_const, false, true);
|
||||
function = std::make_shared<ngraph::Function>(matmul, params, "SplitConcatMultiInputs");
|
||||
} else {
|
||||
function = std::make_shared<ngraph::Function>(concat, params, "SplitConcatMultiInputs");
|
||||
}
|
||||
}
|
||||
|
||||
InferenceEngine::Blob::Ptr SplitConcatMultiInputsTest::GenerateInput(const InferenceEngine::InputInfo &info) const {
|
||||
return FuncTestUtils::createAndFillBlob(info.getTensorDesc(), inputDataMax - inputDataMin, inputDataMin, 1 / inputDataResolution,
|
||||
seed);
|
||||
}
|
||||
} // namespace SubgraphTestsDefinitions
|
@ -378,113 +378,6 @@ TEST_F(FP32NonQuantizedTest, TwoOutputsDiffPrecisionPropagateForward) {
|
||||
.called_with().input("input_1", input_data).result().equals_to(result1).And().equals_to(result2);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2InputsNotAlignedNoFC) {
|
||||
std::vector<float> input_data(20);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2InputsNotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2By50InputsNotAlignedNoFC) {
|
||||
std::vector<float> input_data(100);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2By50InputsNotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2By50InputsNotAlignedNoFCWithInCopyWithOutCopy) {
|
||||
std::vector<float> input_data(100);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2By50InputsNotAlignedNoFCWithInCopyWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3InputsNotAlignedNoFC) {
|
||||
std::vector<float> input_data(30);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3InputsNotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith4InputsNotAlignedNoFC) {
|
||||
std::vector<float> input_data(40);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith4InputsNotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith4InputsNotAlignedNoFCWithOutCopy) {
|
||||
std::vector<float> input_data(40);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith4InputsNotAlignedNoFCWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsNotAlignedNoFC) {
|
||||
std::vector<float> input_data(100);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsNotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsNotAlignedNoFCWithOutCopy) {
|
||||
std::vector<float> input_data(100);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsNotAlignedNoFCWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10By1InputsNotAlignedNoFCWithOutCopy) {
|
||||
std::vector<float> input_data(10);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10By1InputsNotAlignedNoFCWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2InputsNotAlignedWithFC) {
|
||||
std::vector<float> input_data(20);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(10, 211.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2InputsNotAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3InputsNotAlignedWithFC) {
|
||||
std::vector<float> input_data(30);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(10, 466.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3InputsNotAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3By512InputsWithOutCopy) {
|
||||
std::vector<float> input_data(1536);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3By512InputsWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsNotAlignedWithFC) {
|
||||
std::vector<float> input_data(100);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(10, 5051.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsNotAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith2InputsAlignedNoFC) {
|
||||
std::vector<float> input_data(64);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
@ -501,30 +394,6 @@ TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith2By64InputsAlignedNoFC) {
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2Inputs1360NotAlignedNoFC) {
|
||||
std::vector<float> input_data(1360);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2Inputs1360NotAlignedNoFC())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2By64InputsAlignedNoFCWithOutCopy) {
|
||||
std::vector<float> input_data(128);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2By64InputsAlignedNoFCWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2InputsAlignedNoFCWithInCopyWithOutCopy) {
|
||||
std::vector<float> input_data(64);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2InputsAlignedNoFCWithInCopyWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith3InputsAlignedNoFC) {
|
||||
std::vector<float> input_data(96);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
@ -533,14 +402,6 @@ TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith3InputsAlignedNoFC) {
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3InputsAlignedNoFCWithInCopyWithOutCopy) {
|
||||
std::vector<float> input_data(96);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3InputsAlignedNoFCWithInCopyWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith10InputsAlignedNoFC) {
|
||||
std::vector<float> input_data(320);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
@ -549,68 +410,6 @@ TEST_F(FP32NonQuantizedTest, DISABLED_SplitToConcatWith10InputsAlignedNoFC) {
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsAlignedNoFCWithInCopyWithOutCopy) {
|
||||
std::vector<float> input_data(320);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsAlignedNoFCWithInCopyWithOutCopy())
|
||||
.inNotCompactMode().gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(input_data);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2InputsAlignedWithFC) {
|
||||
std::vector<float> input_data(64);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 2081.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2InputsAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith2InputsAlignedWithFCWithInCopy) {
|
||||
std::vector<float> input_data(64);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 2081.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith2InputsAlignedWithFCWithInCopy())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3InputsAlignedWithFC) {
|
||||
std::vector<float> input_data(96);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 4657.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3InputsAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith3InputsAlignedWithFCWithInCopy) {
|
||||
std::vector<float> input_data(96);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 4657.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith3InputsAlignedWithFCWithInCopy())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsAlignedWithFC) {
|
||||
std::vector<float> input_data(320);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 51361.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsAlignedWithFC())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, SplitToConcatWith10InputsAlignedWithFCWithInCopy) {
|
||||
std::vector<float> input_data(320);
|
||||
std::iota(input_data.begin(), input_data.end(), 1.0f);
|
||||
std::vector<float> expected_result(32, 51361.0f);
|
||||
assert_that().onInferModel(SplitToConcatWith10InputsAlignedWithFCWithInCopy())
|
||||
.inNotCompactMode().withWeigthsPattern({1}).gna().propagate_forward().onCPU()
|
||||
.called_with_input(input_data).equals_to(expected_result);
|
||||
}
|
||||
|
||||
TEST_F(FP32NonQuantizedTest, ReshapeConvolutionLessThan48Filters) {
|
||||
std::vector<float> input_data(800, 1.f);
|
||||
std::vector<float> expected_result(1600, 8.f);
|
||||
|
Loading…
Reference in New Issue
Block a user