diff options
-rw-r--r-- | src/backends/backendsCommon/test/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/FillEndToEndTestImpl.hpp | 65 | ||||
-rw-r--r-- | src/backends/cl/test/ClEndToEndTests.cpp | 13 | ||||
-rw-r--r-- | src/backends/neon/test/NeonEndToEndTests.cpp | 12 | ||||
-rw-r--r-- | src/backends/reference/RefLayerSupport.cpp | 2 | ||||
-rw-r--r-- | src/backends/reference/test/RefEndToEndTests.cpp | 16 |
6 files changed, 111 insertions, 2 deletions
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 <armnn/INetwork.hpp> +#include <armnn/TypesUtils.hpp> + +#include <ResolveType.hpp> + +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<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +void FillEndToEnd(const std::vector<armnn::BackendId>& backends) +{ + using namespace armnn; + + FillDescriptor descriptor; + descriptor.m_Value = 9; + + std::vector<T> inputData{ + 1, 1, 5, 3 + }; + + std::vector<T> 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<int, std::vector<T>> inputTensorData = {{ 0, inputData }}; + std::map<int, std::vector<T>> expectedOutputTensorData = {{ 0, expectedOutputData }}; + + EndToEndLayerTestImpl<ArmnnType, ArmnnType>(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 <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp> #include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp> #include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp> +#include <backendsCommon/test/FillEndToEndTestImpl.hpp> #include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp> #include <backendsCommon/test/PreluEndToEndTestImpl.hpp> #include <backendsCommon/test/QLstmEndToEndTestImpl.hpp> @@ -230,6 +231,18 @@ BOOST_AUTO_TEST_CASE(ClInstanceNormalizationNchwEndToEndTest2) InstanceNormalizationNchwEndToEndTest2(defaultBackends); } +// Fill +BOOST_AUTO_TEST_CASE(ClFillEndToEndTest) +{ + FillEndToEnd<armnn::DataType::Float32>(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(ClFillEndToEndTestInt32) +{ + FillEndToEnd<armnn::DataType::Signed32>(defaultBackends); +} + +// Prelu BOOST_AUTO_TEST_CASE(ClPreluEndToEndFloat32Test) { PreluEndToEndNegativeTest<armnn::DataType::Float32>(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 <backendsCommon/test/DequantizeEndToEndTestImpl.hpp> #include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp> #include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp> +#include <backendsCommon/test/FillEndToEndTestImpl.hpp> #include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp> #include <backendsCommon/test/PreluEndToEndTestImpl.hpp> #include <backendsCommon/test/QLstmEndToEndTestImpl.hpp> @@ -445,6 +446,17 @@ BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2) InstanceNormalizationNchwEndToEndTest2(defaultBackends); } +// Fill +BOOST_AUTO_TEST_CASE(NeonFillEndToEndTest) +{ + FillEndToEnd<armnn::DataType::Float32>(defaultBackends); +} + +BOOST_AUTO_TEST_CASE(NeonFillEndToEndTestInt32) +{ + FillEndToEnd<armnn::DataType::Signed32>(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 <backendsCommon/test/DequantizeEndToEndTestImpl.hpp> #include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp> #include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp> +#include <backendsCommon/test/FillEndToEndTestImpl.hpp> #include <backendsCommon/test/GatherEndToEndTestImpl.hpp> #include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp> #include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp> @@ -582,6 +583,21 @@ BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16) EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends); } +BOOST_AUTO_TEST_CASE(RefFillEndToEndTest) +{ + FillEndToEnd<armnn::DataType::Float32>(defaultBackends); +} + +//BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16) +//{ +// FillEndToEnd<armnn::DataType::Float16>(defaultBackends); +//} + +BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32) +{ + FillEndToEnd<armnn::DataType::Signed32>(defaultBackends); +} + BOOST_AUTO_TEST_CASE(RefGatherFloatTest) { GatherEndToEnd<armnn::DataType::Float32>(defaultBackends); |