From a097d2a0ed8e30d5aaf6d29ec18d0c39201b7b67 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Wed, 24 Nov 2021 15:47:28 +0000 Subject: IVGCVSW-6453 'Move the ArmNN Test Utils code to a physically separate directory' * Created include/armnnTestUtils directory * Moved Arm NN test utils files into armnnTestUtils directory Signed-off-by: Sadik Armagan Change-Id: I03ac54c645c41c52650c4c03b6a58fb1481fef5d --- include/armnnTestUtils/DataLayoutUtils.hpp | 60 ++++++++++++++++++++++++++++ include/armnnTestUtils/LayerTestResult.hpp | 63 ++++++++++++++++++++++++++++++ include/armnnTestUtils/PredicateResult.hpp | 48 +++++++++++++++++++++++ include/armnnTestUtils/TensorCopyUtils.hpp | 15 +++++++ 4 files changed, 186 insertions(+) create mode 100644 include/armnnTestUtils/DataLayoutUtils.hpp create mode 100644 include/armnnTestUtils/LayerTestResult.hpp create mode 100644 include/armnnTestUtils/PredicateResult.hpp create mode 100644 include/armnnTestUtils/TensorCopyUtils.hpp (limited to 'include') diff --git a/include/armnnTestUtils/DataLayoutUtils.hpp b/include/armnnTestUtils/DataLayoutUtils.hpp new file mode 100644 index 0000000000..fde6f172cc --- /dev/null +++ b/include/armnnTestUtils/DataLayoutUtils.hpp @@ -0,0 +1,60 @@ +// +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include +#include + +#include + +template +void PermuteTensorNchwToNhwc(armnn::TensorInfo& tensorInfo, std::vector& tensorData) +{ + const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, nchwToNhwc); + + std::vector tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), nchwToNhwc, tensorData.data(), tmp.data(), sizeof(T)); + tensorData = tmp; +} + +template +void PermuteTensorNhwcToNchw(armnn::TensorInfo& tensorInfo, std::vector& tensorData) +{ + const armnn::PermutationVector nhwcToNchw = { 0, 2, 3, 1 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, nhwcToNchw); + + std::vector tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), nhwcToNchw, tensorData.data(), tmp.data(), sizeof(T)); + + tensorData = tmp; +} + +template +void PermuteTensorNdhwcToNcdhw(armnn::TensorInfo& tensorInfo, std::vector& tensorData) +{ + const armnn::PermutationVector ndhwcToNcdhw = { 0, 2, 3, 4, 1 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, ndhwcToNcdhw); + + std::vector tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), ndhwcToNcdhw, tensorData.data(), tmp.data(), sizeof(T)); + tensorData = tmp; +} + +template +void PermuteTensorNcdhwToNdhwc(armnn::TensorInfo& tensorInfo, std::vector& tensorData) +{ + const armnn::PermutationVector ncdhwToNdhwc = { 0, 4, 1, 2, 3 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, ncdhwToNdhwc); + + std::vector tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), ncdhwToNdhwc, tensorData.data(), tmp.data(), sizeof(T)); + tensorData = tmp; +} diff --git a/include/armnnTestUtils/LayerTestResult.hpp b/include/armnnTestUtils/LayerTestResult.hpp new file mode 100644 index 0000000000..410973e4b1 --- /dev/null +++ b/include/armnnTestUtils/LayerTestResult.hpp @@ -0,0 +1,63 @@ +// +// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include +#include + +#include +#include + +template +struct LayerTestResult +{ + LayerTestResult(const armnn::TensorInfo& outputInfo) + : m_Supported(true) + , m_CompareBoolean(false) + { + m_ActualData.reserve(outputInfo.GetNumElements()); + m_ExpectedData.reserve(outputInfo.GetNumElements()); + m_ActualShape = outputInfo.GetShape(); + m_ExpectedShape = outputInfo.GetShape(); + } + + LayerTestResult(const std::vector& actualData, + const std::vector& expectedData, + const armnn::TensorShape& actualShape, + const armnn::TensorShape& expectedShape) + : m_ActualData(actualData) + , m_ExpectedData(expectedData) + , m_ActualShape(actualShape) + , m_ExpectedShape(expectedShape) + , m_Supported(true) + , m_CompareBoolean(false) + {} + + LayerTestResult(const std::vector& actualData, + const std::vector& expectedData, + const armnn::TensorShape& actualShape, + const armnn::TensorShape& expectedShape, + const bool compareBoolean) + : m_ActualData(actualData) + , m_ExpectedData(expectedData) + , m_ActualShape(actualShape) + , m_ExpectedShape(expectedShape) + , m_Supported(true) + , m_CompareBoolean(compareBoolean) + {} + + std::vector m_ActualData; + std::vector m_ExpectedData; + armnn::TensorShape m_ActualShape; + armnn::TensorShape m_ExpectedShape; + + bool m_Supported; + bool m_CompareBoolean; +}; + + + + diff --git a/include/armnnTestUtils/PredicateResult.hpp b/include/armnnTestUtils/PredicateResult.hpp new file mode 100644 index 0000000000..a344c8e3ad --- /dev/null +++ b/include/armnnTestUtils/PredicateResult.hpp @@ -0,0 +1,48 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include + +namespace armnn +{ + +class PredicateResult +{ +public: + explicit PredicateResult(bool result) + : m_Result(result) + {} + + PredicateResult(const PredicateResult& predicateResult) + : m_Result(predicateResult.m_Result) + , m_Message(predicateResult.m_Message.str()) + {} + + void SetResult(bool newResult) + { + m_Result = newResult; + } + + std::stringstream& Message() + { + return m_Message; + } + + bool operator!() const + { + return !m_Result; + } + + void operator=(PredicateResult otherPredicateResult) + { + otherPredicateResult.m_Result = m_Result; + } + + bool m_Result; + std::stringstream m_Message; +}; + +} // namespace armnn \ No newline at end of file diff --git a/include/armnnTestUtils/TensorCopyUtils.hpp b/include/armnnTestUtils/TensorCopyUtils.hpp new file mode 100644 index 0000000000..ae6072e46e --- /dev/null +++ b/include/armnnTestUtils/TensorCopyUtils.hpp @@ -0,0 +1,15 @@ +// +// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include + +#include + +void CopyDataToITensorHandle(armnn::ITensorHandle* tensorHandle, const void* memory); + +void CopyDataFromITensorHandle(void* mem, const armnn::ITensorHandle* tensorHandle); + +void AllocateAndCopyDataToITensorHandle(armnn::ITensorHandle* tensorHandle, const void* memory); \ No newline at end of file -- cgit v1.2.1