aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/test/RefMemCopyTests.cpp
diff options
context:
space:
mode:
authorColm Donelan <colm.donelan@arm.com>2022-02-02 16:35:09 +0000
committerFrancis Murtagh <francis.murtagh@arm.com>2022-02-07 20:07:44 +0000
commitc42a987aa53d0fd842c34dee90abef5a9ff15fa4 (patch)
treed049993d38a8db54dc18e4c76c998e0598015f18 /src/backends/reference/test/RefMemCopyTests.cpp
parent16829713a5d2096c8f0dc989fbb0964a9280777a (diff)
downloadarmnn-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.cpp70
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());
+ }
+}