From 160edb3a6b10bfe5fd6e3fcc118765265d1722a6 Mon Sep 17 00:00:00 2001 From: Cian McGriskin Date: Tue, 25 Jul 2023 14:15:45 +0100 Subject: IVGCVSW-7887 Add TILE End to End tests * Fix error in InferOutputShapes Signed-off-by: Cian McGriskin Change-Id: I1b38285d82d22715c6502dc63b7bab981e3258e4 --- src/backends/backendsCommon/test/CMakeLists.txt | 1 + .../backendsCommon/test/TileEndToEndTestImpl.hpp | 61 ++++++++++++++++++++++ src/backends/reference/test/RefEndToEndTests.cpp | 37 +++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 src/backends/backendsCommon/test/TileEndToEndTestImpl.hpp (limited to 'src/backends') 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 +#include +#include + +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 > +void TileEndToEnd(const std::vector& 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 inputData = armnnUtils::QuantizedVector({ + 0.f, 1.f, 2.f, + 3.f, 4.f, 5.f + }, qScale, qOffset); + + std::vector expectedOutputData = armnnUtils::QuantizedVector({ + 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{ 2, 2 }); + INetworkPtr network = CreateTileNetwork(descriptor, inputInfo, outputInfo); + + std::map> inputTensor = { { 0, inputData } }; + std::map> expectedOutputTensor = { { 0, expectedOutputData } }; + EndToEndLayerTestImpl(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 #include #include +#include #include #include @@ -1180,6 +1181,42 @@ TEST_CASE("RefSplitter4dDim3EndToEndUint8Test") Splitter4dDim3EndToEnd(defaultBackends); } +// Tile +TEST_CASE("RefTileEndToEndFloat32") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndFloat16") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQAsymmS8") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQAsymmU8") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQSymmS8") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndQSymmS16") +{ + TileEndToEnd(defaultBackends); +} + +TEST_CASE("RefTileEndToEndSigned32") +{ + TileEndToEnd(defaultBackends); +} + // TransposeConvolution2d TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest") { -- cgit v1.2.1