diff options
author | Colm Donelan <colm.donelan@arm.com> | 2022-02-02 16:35:09 +0000 |
---|---|---|
committer | Francis Murtagh <francis.murtagh@arm.com> | 2022-02-07 20:07:44 +0000 |
commit | c42a987aa53d0fd842c34dee90abef5a9ff15fa4 (patch) | |
tree | d049993d38a8db54dc18e4c76c998e0598015f18 /src/backends/reference/test/RefMemCopyTests.cpp | |
parent | 16829713a5d2096c8f0dc989fbb0964a9280777a (diff) | |
download | armnn-c42a987aa53d0fd842c34dee90abef5a9ff15fa4.tar.gz |
IVGCVSW-6635 Move MemCopyTestImpl from acl to armnnTestUtils.
* Move MemCopyTestImpl.hpp from src/backends/aclCommon/test/ to
include/armnnTestutils.
* Refactor MemCopyTests in aclCommon, cl and Neon.
* Introduce RefMemCopyTests to exercise this utility in x86 builds.
Signed-off-by: Colm Donelan <colm.donelan@arm.com>
Change-Id: I8824f013d3656658ed0a2904bb79384e3af68641
Diffstat (limited to 'src/backends/reference/test/RefMemCopyTests.cpp')
-rw-r--r-- | src/backends/reference/test/RefMemCopyTests.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/backends/reference/test/RefMemCopyTests.cpp b/src/backends/reference/test/RefMemCopyTests.cpp new file mode 100644 index 0000000000..e97d979a9b --- /dev/null +++ b/src/backends/reference/test/RefMemCopyTests.cpp @@ -0,0 +1,70 @@ +// +// Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <reference/RefWorkloadFactory.hpp> +#include <reference/RefBackend.hpp> +#include <armnnTestUtils/LayerTestResult.hpp> +#include <armnnTestUtils/MemCopyTestImpl.hpp> +#include <armnnTestUtils/MockBackend.hpp> +#include <doctest/doctest.h> + +namespace +{ + +template <> +struct MemCopyTestHelper<armnn::RefWorkloadFactory> +{ + static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager() + { + armnn::RefBackend backend; + return backend.CreateMemoryManager(); + } + + static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&) + { + return armnn::RefWorkloadFactory(); + } +}; +} // namespace + +TEST_SUITE("RefMemCopy") +{ + + TEST_CASE("CopyBetweenCpuMockAndRef") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenRefAndCpuMock") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenCpuMockAndRefWithSubtensors") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } + + TEST_CASE("CopyBetweenRefAndCpuMockWithSubtensors") + { + LayerTestResult<float, 4> result = + MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true); + auto predResult = + CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape); + CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str()); + } +} |