aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeresa Charlin <teresa.charlinreyes@arm.com>2021-09-27 10:10:39 +0100
committerJim Flynn <jim.flynn@arm.com>2021-09-29 16:09:28 +0000
commit43baf509c2c47e19a5c7a98c97bbfeda0311edd0 (patch)
treea01fee1b9c3a06bc82c43cd273b394acb2323f62
parent9a701c840f9e2fdc16117321658c9d4d7b4ccb60 (diff)
downloadarmnn-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
-rw-r--r--src/backends/backendsCommon/test/CMakeLists.txt1
-rw-r--r--src/backends/backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp70
-rw-r--r--src/backends/reference/test/RefEndToEndTests.cpp11
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);