xref: /aosp_15_r20/external/armnn/src/backends/cl/test/ClMemCopyTests.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include <armnnTestUtils/LayerTestResult.hpp>
7*89c4ff92SAndroid Build Coastguard Worker #include <armnnTestUtils/MemCopyTestImpl.hpp>
8*89c4ff92SAndroid Build Coastguard Worker #include <armnnTestUtils/MockBackend.hpp>
9*89c4ff92SAndroid Build Coastguard Worker #include <cl/ClWorkloadFactory.hpp>
10*89c4ff92SAndroid Build Coastguard Worker #include <cl/ClBackend.hpp>
11*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker namespace
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker 
16*89c4ff92SAndroid Build Coastguard Worker template <>
17*89c4ff92SAndroid Build Coastguard Worker struct MemCopyTestHelper<armnn::ClWorkloadFactory>
18*89c4ff92SAndroid Build Coastguard Worker {
GetMemoryManager__anon9fcad6ad0111::MemCopyTestHelper19*89c4ff92SAndroid Build Coastguard Worker     static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20*89c4ff92SAndroid Build Coastguard Worker     {
21*89c4ff92SAndroid Build Coastguard Worker         armnn::ClBackend backend;
22*89c4ff92SAndroid Build Coastguard Worker         return backend.CreateMemoryManager();
23*89c4ff92SAndroid Build Coastguard Worker     }
24*89c4ff92SAndroid Build Coastguard Worker 
GetFactory__anon9fcad6ad0111::MemCopyTestHelper25*89c4ff92SAndroid Build Coastguard Worker     static armnn::ClWorkloadFactory GetFactory(
26*89c4ff92SAndroid Build Coastguard Worker         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27*89c4ff92SAndroid Build Coastguard Worker         const armnn::ModelOptions& modelOptions = {})
28*89c4ff92SAndroid Build Coastguard Worker     {
29*89c4ff92SAndroid Build Coastguard Worker         armnn::ClBackend backend;
30*89c4ff92SAndroid Build Coastguard Worker         return armnn::ClWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager),
31*89c4ff92SAndroid Build Coastguard Worker                                         backend.CreateBackendSpecificModelContext(modelOptions));
32*89c4ff92SAndroid Build Coastguard Worker     }
33*89c4ff92SAndroid Build Coastguard Worker };
34*89c4ff92SAndroid Build Coastguard Worker }    // namespace
35*89c4ff92SAndroid Build Coastguard Worker 
36*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("ClMemCopy")
37*89c4ff92SAndroid Build Coastguard Worker {
38*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CopyBetweenCpuAndGpu")
39*89c4ff92SAndroid Build Coastguard Worker {
40*89c4ff92SAndroid Build Coastguard Worker     LayerTestResult<float, 4> result =
41*89c4ff92SAndroid Build Coastguard Worker         MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(false);
42*89c4ff92SAndroid Build Coastguard Worker     auto predResult = CompareTensors(result.m_ActualData,  result.m_ExpectedData,
43*89c4ff92SAndroid Build Coastguard Worker                                      result.m_ActualShape, result.m_ExpectedShape);
44*89c4ff92SAndroid Build Coastguard Worker     CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
45*89c4ff92SAndroid Build Coastguard Worker }
46*89c4ff92SAndroid Build Coastguard Worker 
47*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CopyBetweenGpuAndCpu")
48*89c4ff92SAndroid Build Coastguard Worker {
49*89c4ff92SAndroid Build Coastguard Worker     LayerTestResult<float, 4> result =
50*89c4ff92SAndroid Build Coastguard Worker         MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
51*89c4ff92SAndroid Build Coastguard Worker     auto predResult = CompareTensors(result.m_ActualData,  result.m_ExpectedData,
52*89c4ff92SAndroid Build Coastguard Worker                                      result.m_ActualShape, result.m_ExpectedShape);
53*89c4ff92SAndroid Build Coastguard Worker     CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
54*89c4ff92SAndroid Build Coastguard Worker }
55*89c4ff92SAndroid Build Coastguard Worker 
56*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CopyBetweenCpuAndGpuWithSubtensors")
57*89c4ff92SAndroid Build Coastguard Worker {
58*89c4ff92SAndroid Build Coastguard Worker     LayerTestResult<float, 4> result =
59*89c4ff92SAndroid Build Coastguard Worker         MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(true);
60*89c4ff92SAndroid Build Coastguard Worker     auto predResult = CompareTensors(result.m_ActualData,  result.m_ExpectedData,
61*89c4ff92SAndroid Build Coastguard Worker                                      result.m_ActualShape, result.m_ExpectedShape);
62*89c4ff92SAndroid Build Coastguard Worker     CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
63*89c4ff92SAndroid Build Coastguard Worker }
64*89c4ff92SAndroid Build Coastguard Worker 
65*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CopyBetweenGpuAndCpuWithSubtensors")
66*89c4ff92SAndroid Build Coastguard Worker {
67*89c4ff92SAndroid Build Coastguard Worker     LayerTestResult<float, 4> result =
68*89c4ff92SAndroid Build Coastguard Worker         MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
69*89c4ff92SAndroid Build Coastguard Worker     auto predResult = CompareTensors(result.m_ActualData,  result.m_ExpectedData,
70*89c4ff92SAndroid Build Coastguard Worker                                      result.m_ActualShape, result.m_ExpectedShape);
71*89c4ff92SAndroid Build Coastguard Worker     CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
72*89c4ff92SAndroid Build Coastguard Worker }
73*89c4ff92SAndroid Build Coastguard Worker 
74*89c4ff92SAndroid Build Coastguard Worker }
75