diff options
author | Cian McGriskin <cian.mcgriskin@arm.com> | 2023-07-25 14:15:45 +0100 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2023-07-25 17:04:40 +0000 |
commit | 160edb3a6b10bfe5fd6e3fcc118765265d1722a6 (patch) | |
tree | 0aad2731736b47b5f4ce77ad19616061a663d718 /src/backends | |
parent | 616b22f52b169db10992fd70f4584365fd3db463 (diff) | |
download | armnn-160edb3a6b10bfe5fd6e3fcc118765265d1722a6.tar.gz |
IVGCVSW-7887 Add TILE End to End tests
* Fix error in InferOutputShapes
Signed-off-by: Cian McGriskin <cian.mcgriskin@arm.com>
Change-Id: I1b38285d82d22715c6502dc63b7bab981e3258e4
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/backendsCommon/test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/TileEndToEndTestImpl.hpp | 61 | ||||
-rw-r--r-- | src/backends/reference/test/RefEndToEndTests.cpp | 37 |
3 files changed, 99 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index bbd1324010..7c24f9ca10 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -61,6 +61,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources StridedSliceAsyncEndToEndTest.hpp SubgraphUtilsTest.hpp SubtractionEndToEndTestImpl.hpp + TileEndToEndTestImpl.hpp TransposeEndToEndTestImpl.hpp TensorCopyUtils.hpp WorkloadFactoryHelper.hpp diff --git a/src/backends/backendsCommon/test/TileEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/TileEndToEndTestImpl.hpp new file mode 100644 index 0000000000..4047e5ad8e --- /dev/null +++ b/src/backends/backendsCommon/test/TileEndToEndTestImpl.hpp @@ -0,0 +1,61 @@ +// +// Copyright © 2023 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once +#include "armnn/INetwork.hpp" +#include "armnnUtils/QuantizeHelper.hpp" +#include <CommonTestUtils.hpp> +#include <ResolveType.hpp> +#include <doctest/doctest.h> + +namespace +{ +using namespace armnn; +armnn::INetworkPtr CreateTileNetwork(TileDescriptor& descriptor, + const armnn::TensorInfo& inputInfo, + const armnn::TensorInfo& outputInfo) +{ + INetworkPtr network(INetwork::Create()); + IConnectableLayer* inputLayer = network->AddInputLayer(0, "input"); + IConnectableLayer* tileLayer = network->AddTileLayer(descriptor, "tile"); + IConnectableLayer* outputLayer = network->AddOutputLayer(0, "output"); + Connect(inputLayer, tileLayer, inputInfo, 0, 0); + Connect(tileLayer, outputLayer, outputInfo, 0, 0); + return network; +} + +template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +void TileEndToEnd(const std::vector<BackendId>& backends) +{ + float qScale = 1.0f; + int32_t qOffset = 0; + bool qConst = true; + + const TensorShape inputTensorShape = { 2, 3 }; + const TensorShape outputTensorShape = { 4, 6 }; + + TensorInfo inputInfo (inputTensorShape, ArmnnType, qScale, qOffset, qConst); + TensorInfo outputInfo (outputTensorShape, ArmnnType,qScale, qOffset); + + std::vector<T> inputData = armnnUtils::QuantizedVector<T>({ + 0.f, 1.f, 2.f, + 3.f, 4.f, 5.f + }, qScale, qOffset); + + std::vector<T> expectedOutputData = armnnUtils::QuantizedVector<T>({ + 0.f, 1.f, 2.f, 0.f, 1.f, 2.f, + 3.f, 4.f, 5.f, 3.f, 4.f, 5.f, + 0.f, 1.f, 2.f, 0.f, 1.f, 2.f, + 3.f, 4.f, 5.f, 3.f, 4.f, 5.f + }, qScale, qOffset); + + auto descriptor = armnn::TileDescriptor(std::vector<uint32_t>{ 2, 2 }); + INetworkPtr network = CreateTileNetwork(descriptor, inputInfo, outputInfo); + + std::map<int, std::vector<T>> inputTensor = { { 0, inputData } }; + std::map<int, std::vector<T>> expectedOutputTensor = { { 0, expectedOutputData } }; + EndToEndLayerTestImpl<ArmnnType, ArmnnType>(std::move(network), inputTensor, expectedOutputTensor, backends); +} + +} // anonymous namespace
\ No newline at end of file diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp index eb2aabcd1e..6f05ba77cb 100644 --- a/src/backends/reference/test/RefEndToEndTests.cpp +++ b/src/backends/reference/test/RefEndToEndTests.cpp @@ -36,6 +36,7 @@ #include <backendsCommon/test/SplitterEndToEndTestImpl.hpp> #include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp> #include <backendsCommon/test/SubgraphUtilsTest.hpp> +#include <backendsCommon/test/TileEndToEndTestImpl.hpp> #include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp> #include <backendsCommon/test/TransposeEndToEndTestImpl.hpp> @@ -1180,6 +1181,42 @@ TEST_CASE("RefSplitter4dDim3EndToEndUint8Test") Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends); } +// Tile +TEST_CASE("RefTileEndToEndFloat32") +{ + TileEndToEnd<armnn::DataType::Float32>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndFloat16") +{ + TileEndToEnd<armnn::DataType::Float16>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQAsymmS8") +{ + TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQAsymmU8") +{ + TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQSymmS8") +{ + TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQSymmS16") +{ + TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends); +} + +TEST_CASE("RefTileEndToEndSigned32") +{ + TileEndToEnd<armnn::DataType::Signed32>(defaultBackends); +} + // TransposeConvolution2d TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest") { |