From 4408850bd426481e39ae9182aff4d563b6836181 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Mon, 27 Jul 2020 11:27:19 +0100 Subject: IVGCVSW-4712 Add EndToEnd test for FILL Signed-off-by: Teresa Charlin Change-Id: Ic89bcbbd580abe1b05bd26748db704e83cf65bea --- src/backends/backendsCommon/test/CMakeLists.txt | 5 +- .../backendsCommon/test/FillEndToEndTestImpl.hpp | 65 ++++++++++++++++++++++ src/backends/cl/test/ClEndToEndTests.cpp | 13 +++++ src/backends/neon/test/NeonEndToEndTests.cpp | 12 ++++ src/backends/reference/RefLayerSupport.cpp | 2 + src/backends/reference/test/RefEndToEndTests.cpp | 16 ++++++ 6 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index 8373c28cd3..19e897c2f7 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -1,10 +1,11 @@ # -# Copyright © 2017 Arm Ltd. All rights reserved. +# Copyright © 2017 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # list(APPEND armnnBackendsCommonUnitTests_sources ActivationFixture.hpp + ActivationEndToEndTestImpl.hpp ArgMinMaxEndToEndTestImpl.hpp BackendIdTests.cpp BackendProfilingTests.cpp @@ -21,7 +22,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources DynamicBackendTests.hpp ElementwiseUnaryEndToEndTestImpl.hpp EndToEndTestImpl.hpp - ActivationEndToEndTestImpl.hpp + FillEndToEndTestImpl.hpp GatherEndToEndTestImpl.hpp InstanceNormalizationEndToEndTestImpl.cpp InstanceNormalizationEndToEndTestImpl.hpp diff --git a/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp new file mode 100644 index 0000000000..f734a948ab --- /dev/null +++ b/src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp @@ -0,0 +1,65 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "CommonTestUtils.hpp" + +#include +#include + +#include + +namespace +{ + +armnn::INetworkPtr CreateFillNetwork(const armnn::TensorInfo& inputTensorInfo, + const armnn::TensorInfo& outputTensorInfo, + armnn::FillDescriptor descriptor) +{ + armnn::INetworkPtr network(armnn::INetwork::Create()); + + armnn::IConnectableLayer* inputLayer = network->AddInputLayer(0, "Input"); + armnn::IConnectableLayer* fillLayer = network->AddFillLayer(descriptor, "Fill"); + armnn::IConnectableLayer* outputLayer = network->AddOutputLayer(0, "Output"); + + Connect(inputLayer, fillLayer, inputTensorInfo, 0, 0); + Connect(fillLayer, outputLayer, outputTensorInfo, 0, 0); + + return network; +} + +template> +void FillEndToEnd(const std::vector& backends) +{ + using namespace armnn; + + FillDescriptor descriptor; + descriptor.m_Value = 9; + + std::vector inputData{ + 1, 1, 5, 3 + }; + + std::vector expectedOutputData{ + 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9 + }; + + TensorInfo inputInfo ({ 4 }, ArmnnType); + TensorInfo outputInfo({ 1, 1, 5, 3 }, ArmnnType); + + armnn::INetworkPtr network = CreateFillNetwork(inputInfo, outputInfo, descriptor); + + BOOST_TEST_CHECKPOINT("create a network"); + + std::map> inputTensorData = {{ 0, inputData }}; + std::map> expectedOutputTensorData = {{ 0, expectedOutputData }}; + + EndToEndLayerTestImpl(move(network), inputTensorData, expectedOutputTensorData, backends); +} + +} // anonymous namespace \ No newline at end of file diff --git a/src/backends/cl/test/ClEndToEndTests.cpp b/src/backends/cl/test/ClEndToEndTests.cpp index 84aa9138ee..0ac1b2a1e6 100644 --- a/src/backends/cl/test/ClEndToEndTests.cpp +++ b/src/backends/cl/test/ClEndToEndTests.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -230,6 +231,18 @@ BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest2) InstanceNormalizationNchwEndToEndTest2(defaultBackends); } +// Fill +BOOST_AUTO_TEST_CASE(ClFillEndToEndTest) +{ + FillEndToEnd(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(ClFillEndToEndTestInt32) +{ + FillEndToEnd(defaultBackends); +} + +// Prelu BOOST_AUTO_TEST_CASE(ClPreluEndToEndFloat32Test) { PreluEndToEndNegativeTest(defaultBackends); diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp index 9444ee0e96..e89718a05e 100644 --- a/src/backends/neon/test/NeonEndToEndTests.cpp +++ b/src/backends/neon/test/NeonEndToEndTests.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -445,6 +446,17 @@ BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2) InstanceNormalizationNchwEndToEndTest2(defaultBackends); } +// Fill +BOOST_AUTO_TEST_CASE(NeonFillEndToEndTest) +{ + FillEndToEnd(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(NeonFillEndToEndTestInt32) +{ + FillEndToEnd(defaultBackends); +} + // ArgMinMax BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTest) { diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 877d200208..1886d3253b 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -877,6 +877,8 @@ bool RefLayerSupport::IsFillSupported(const TensorInfo& input, supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported, "Reference Fill: input type not supported."); + supported &= CheckSupportRule(TypeAnyOf(output, supportedTypes), reasonIfUnsupported, + "Reference Fill: output type not supported."); return supported; } diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp index 45605e0fc6..88876877bf 100644 --- a/src/backends/reference/test/RefEndToEndTests.cpp +++ b/src/backends/reference/test/RefEndToEndTests.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -582,6 +583,21 @@ BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16) EluEndToEndTest(defaultBackends); } +BOOST_AUTO_TEST_CASE(RefFillEndToEndTest) +{ + FillEndToEnd(defaultBackends); +} + +//BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) +//{ +// FillEndToEnd(defaultBackends); +//} + +BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32) +{ + FillEndToEnd(defaultBackends); +} + BOOST_AUTO_TEST_CASE(RefGatherFloatTest) { GatherEndToEnd(defaultBackends); -- cgit v1.2.1