From 6bc85258b0a87cde2e1e644d930ea546b6c3a1cc Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Tue, 6 Dec 2022 20:43:06 +0000 Subject: IVGCVSW-6853 Rewrite BuildArmComputePermutationVector() * Some pemutation vectors were not converted correctly. * Add Transpose end to end test. * Comments added with an example to clarify the differences betweeen Transpose and Permute Signed-off-by: Teresa Charlin Change-Id: I6c0954ca6ce00ef5f2a6f3625abe6f4fd27b5cdf --- src/backends/backendsCommon/test/CMakeLists.txt | 3 +- .../test/TransposeEndToEndTestImpl.hpp | 69 ++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/backends/backendsCommon/test/TransposeEndToEndTestImpl.hpp (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt index 232226b5df..c9668a22f2 100644 --- a/src/backends/backendsCommon/test/CMakeLists.txt +++ b/src/backends/backendsCommon/test/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +# Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # @@ -54,6 +54,7 @@ list(APPEND armnnBackendsCommonUnitTests_sources SpaceToDepthEndToEndTestImpl.hpp SplitterEndToEndTestImpl.hpp StridedSliceAsyncEndToEndTest.hpp + TransposeEndToEndTestImpl.hpp TensorCopyUtils.hpp WorkloadFactoryHelper.hpp layerTests/AbsTestImpl.cpp diff --git a/src/backends/backendsCommon/test/TransposeEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/TransposeEndToEndTestImpl.hpp new file mode 100644 index 0000000000..32e1b0edaf --- /dev/null +++ b/src/backends/backendsCommon/test/TransposeEndToEndTestImpl.hpp @@ -0,0 +1,69 @@ +// +// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +#include +#include + +#include + +#include + +namespace +{ + +armnn::INetworkPtr CreateTransposeNetwork(const armnn::TensorInfo& inputTensorInfo, + const armnn::TensorInfo& outputTensorInfo, + const armnn::PermutationVector& mappings) +{ + armnn::INetworkPtr network(armnn::INetwork::Create()); + + const armnn::TransposeDescriptor transposeDescriptor(mappings); + + armnn::IConnectableLayer* inputLayer = network->AddInputLayer(0, "Input"); + armnn::IConnectableLayer* transposeLayer = network->AddTransposeLayer(transposeDescriptor, "Transpose"); + armnn::IConnectableLayer* outputLayer = network->AddOutputLayer(0, "Output"); + + Connect(inputLayer, transposeLayer, inputTensorInfo, 0, 0); + Connect(transposeLayer, outputLayer, outputTensorInfo, 0, 0); + + return network; +} + +template> +void TransposeEndToEnd(const std::vector& backends) +{ + using namespace armnn; + + std::vector floatInputData{ + 1, 2, 3, 4, 5, + 11, 12, 13, 14, 15, + 21, 22, 23, 24, 25 + }; + std::vector inputData = armnnUtils::QuantizedVector(floatInputData); + std::vector expectedOutputData = armnnUtils::QuantizedVector(floatInputData); + + const armnn::PermutationVector mappings{0, 2, 1 ,3}; + + TensorInfo inputInfo ({ 1, 1, 5, 3 }, ArmnnType, 0.0f, 0, true); + TensorInfo outputInfo({ 1, 5, 1, 3 }, ArmnnType, 0.0f, 0, true); + + armnn::INetworkPtr network = CreateTransposeNetwork(inputInfo, outputInfo, mappings); + + CHECK(network); + + std::map> inputTensorData = {{ 0, inputData }}; + std::map> expectedOutputTensorData = {{ 0, expectedOutputData }}; + + EndToEndLayerTestImpl(std::move(network), + inputTensorData, + expectedOutputTensorData, + backends); +} + +} // anonymous namespace \ No newline at end of file -- cgit v1.2.1