From 43baf509c2c47e19a5c7a98c97bbfeda0311edd0 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Mon, 27 Sep 2021 10:10:39 +0100 Subject: IVGCVSW-3716 Add EndToEnd Layer test for Channel Shuffle Workload Signed-off-by: Teresa Charlin Change-Id: I43d052d020f90c13688901929cd22c715471ef4f --- src/backends/backendsCommon/test/CMakeLists.txt | 1 + .../test/ChannelShuffleEndToEndTestImpl.hpp | 70 ++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp (limited to 'src/backends/backendsCommon/test') diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index 292ec0efd2..c17ab0fb0f 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -10,6 +10,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources BackendIdTests.cpp BackendProfilingTests.cpp BackendRegistryTests.cpp + ChannelShuffleEndToEndTestImpl.hpp ComparisonEndToEndTestImpl.hpp CompatibilityTests.cpp DefaultAsyncExecuteTest.cpp diff --git a/src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp new file mode 100644 index 0000000000..9ec764402e --- /dev/null +++ b/src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp @@ -0,0 +1,70 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "CommonTestUtils.hpp" + +#include +#include + +#include + +namespace{ + +armnn::INetworkPtr CreateChannelShuffleNetwork(const armnn::TensorInfo& inputInfo, + const armnn::TensorInfo& outputInfo, + const armnn::ChannelShuffleDescriptor& descriptor) +{ + armnn::INetworkPtr net(armnn::INetwork::Create()); + + armnn::IConnectableLayer* inputLayer = net->AddInputLayer(0); + armnn::IConnectableLayer* channelShuffleLayer = net->AddChannelShuffleLayer(descriptor, "channelShuffle"); + armnn::IConnectableLayer* outputLayer = net->AddOutputLayer(0, "output"); + Connect(inputLayer, channelShuffleLayer, inputInfo, 0, 0); + Connect(channelShuffleLayer, outputLayer, outputInfo, 0, 0); + + return net; +} + +template> +void ChannelShuffleEndToEnd(const std::vector& backends) +{ + armnn::TensorInfo inputInfo({ 3,12 }, ArmnnType); + armnn::TensorInfo outputInfo({ 3,12 }, ArmnnType); + + inputInfo.SetQuantizationScale(1.0f); + inputInfo.SetQuantizationOffset(0); + outputInfo.SetQuantizationScale(1.0f); + outputInfo.SetQuantizationOffset(0); + + // Creates structures for input & output. + std::vector inputData{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 + }; + + std::vector expectedOutput{ + 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11, + 12, 16, 20, 13, 17, 21, 14, 18, 22, 15, 19, 23, + 24, 28, 32, 25, 29, 33, 26, 30, 34, 27, 31, 35 + }; + ChannelShuffleDescriptor descriptor; + descriptor.m_Axis = 1; + descriptor.m_NumGroups = 3; + + // Builds up the structure of the network + armnn::INetworkPtr net = CreateChannelShuffleNetwork(inputInfo, outputInfo, descriptor); + + CHECK(net); + + std::map> inputTensorData = {{ 0, inputData }}; + std::map> expectedOutputData = {{ 0, expectedOutput }}; + + EndToEndLayerTestImpl(move(net), inputTensorData, expectedOutputData, backends); +} + +} // anonymous namespace -- cgit v1.2.1