diff options
Diffstat (limited to 'include/armnnTestUtils')
-rw-r--r-- | include/armnnTestUtils/DataLayoutUtils.hpp | 60 | ||||
-rw-r--r-- | include/armnnTestUtils/LayerTestResult.hpp | 63 | ||||
-rw-r--r-- | include/armnnTestUtils/PredicateResult.hpp | 48 | ||||
-rw-r--r-- | include/armnnTestUtils/TensorCopyUtils.hpp | 15 |
4 files changed, 186 insertions, 0 deletions
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 <armnn/Tensor.hpp> +#include <armnn/Types.hpp> + +#include <armnnUtils/Permute.hpp> + +template<typename T> +void PermuteTensorNchwToNhwc(armnn::TensorInfo& tensorInfo, std::vector<T>& tensorData) +{ + const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, nchwToNhwc); + + std::vector<T> tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), nchwToNhwc, tensorData.data(), tmp.data(), sizeof(T)); + tensorData = tmp; +} + +template<typename T> +void PermuteTensorNhwcToNchw(armnn::TensorInfo& tensorInfo, std::vector<T>& tensorData) +{ + const armnn::PermutationVector nhwcToNchw = { 0, 2, 3, 1 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, nhwcToNchw); + + std::vector<T> tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), nhwcToNchw, tensorData.data(), tmp.data(), sizeof(T)); + + tensorData = tmp; +} + +template<typename T> +void PermuteTensorNdhwcToNcdhw(armnn::TensorInfo& tensorInfo, std::vector<T>& tensorData) +{ + const armnn::PermutationVector ndhwcToNcdhw = { 0, 2, 3, 4, 1 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, ndhwcToNcdhw); + + std::vector<T> tmp(tensorData.size()); + armnnUtils::Permute(tensorInfo.GetShape(), ndhwcToNcdhw, tensorData.data(), tmp.data(), sizeof(T)); + tensorData = tmp; +} + +template<typename T> +void PermuteTensorNcdhwToNdhwc(armnn::TensorInfo& tensorInfo, std::vector<T>& tensorData) +{ + const armnn::PermutationVector ncdhwToNdhwc = { 0, 4, 1, 2, 3 }; + + tensorInfo = armnnUtils::Permuted(tensorInfo, ncdhwToNdhwc); + + std::vector<T> 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 <armnn/Tensor.hpp> +#include <armnn/utility/Assert.hpp> + +#include <cstddef> +#include <vector> + +template <typename T, std::size_t n> +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<T>& actualData, + const std::vector<T>& 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<T>& actualData, + const std::vector<T>& 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<T> m_ActualData; + std::vector<T> 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 <sstream> + +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 <armnn/Tensor.hpp> + +#include <armnn/backends/ITensorHandle.hpp> + +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 |