diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2021-09-27 10:10:39 +0100 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2021-09-29 16:09:28 +0000 |
commit | 43baf509c2c47e19a5c7a98c97bbfeda0311edd0 (patch) | |
tree | a01fee1b9c3a06bc82c43cd273b394acb2323f62 /src/backends | |
parent | 9a701c840f9e2fdc16117321658c9d4d7b4ccb60 (diff) | |
download | armnn-43baf509c2c47e19a5c7a98c97bbfeda0311edd0.tar.gz |
IVGCVSW-3716 Add EndToEnd Layer test for Channel Shuffle Workload
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I43d052d020f90c13688901929cd22c715471ef4f
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/backendsCommon/test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp | 70 | ||||
-rw-r--r-- | src/backends/reference/test/RefEndToEndTests.cpp | 11 |
3 files changed, 82 insertions, 0 deletions
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 <armnn/INetwork.hpp> +#include <ResolveType.hpp> + +#include <doctest/doctest.h> + +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<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +void ChannelShuffleEndToEnd(const std::vector<BackendId>& 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<T> 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<T> 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<int, std::vector<T>> inputTensorData = {{ 0, inputData }}; + std::map<int, std::vector<T>> expectedOutputData = {{ 0, expectedOutput }}; + + EndToEndLayerTestImpl<ArmnnType, ArmnnType>(move(net), inputTensorData, expectedOutputData, backends); +} + +} // anonymous namespace diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp index 424df977c8..ed4b229ace 100644 --- a/src/backends/reference/test/RefEndToEndTests.cpp +++ b/src/backends/reference/test/RefEndToEndTests.cpp @@ -8,6 +8,7 @@ #include <backendsCommon/test/ActivationEndToEndTestImpl.hpp> #include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp> #include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp> +#include <backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp> #include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp> #include <backendsCommon/test/ConcatEndToEndTestImpl.hpp> #include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp> @@ -515,6 +516,16 @@ TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest") BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW); } +TEST_CASE("RefChannelShuffleFloatTest") +{ + ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends); +} + +TEST_CASE("RefChannelShuffleUint8Test") +{ + ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends); +} + TEST_CASE("RefConcatEndToEndDim0Test") { ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends); |