ArmNN
 22.05.01
ClMemCopyTests.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
10 #include <cl/ClBackend.hpp>
11 #include <doctest/doctest.h>
12 
13 namespace
14 {
15 
16 template <>
17 struct MemCopyTestHelper<armnn::ClWorkloadFactory>
18 {
19  static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20  {
21  armnn::ClBackend backend;
22  return backend.CreateMemoryManager();
23  }
24 
25  static armnn::ClWorkloadFactory GetFactory(
27  const armnn::ModelOptions& modelOptions = {})
28  {
29  armnn::ClBackend backend;
30  return armnn::ClWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager),
31  backend.CreateBackendSpecificModelContext(modelOptions));
32  }
33 };
34 } // namespace
35 
36 TEST_SUITE("ClMemCopy")
37 {
38 TEST_CASE("CopyBetweenCpuAndGpu")
39 {
41  MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(false);
42  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
43  result.m_ActualShape, result.m_ExpectedShape);
44  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
45 }
46 
47 TEST_CASE("CopyBetweenGpuAndCpu")
48 {
50  MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
51  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
52  result.m_ActualShape, result.m_ExpectedShape);
53  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
54 }
55 
56 TEST_CASE("CopyBetweenCpuAndGpuWithSubtensors")
57 {
59  MemCopyTest<armnn::MockWorkloadFactory, armnn::ClWorkloadFactory, armnn::DataType::Float32>(true);
60  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
61  result.m_ActualShape, result.m_ExpectedShape);
62  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
63 }
64 
65 TEST_CASE("CopyBetweenGpuAndCpuWithSubtensors")
66 {
68  MemCopyTest<armnn::ClWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
69  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
70  result.m_ActualShape, result.m_ExpectedShape);
71  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
72 }
73 
74 }
armnn::TensorShape m_ExpectedShape
std::vector< BackendOptions > ModelOptions
Copyright (c) 2021 ARM Limited and Contributors.
IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override
Definition: ClBackend.cpp:51
IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext(const ModelOptions &modelOptions) const override
Definition: ClBackend.cpp:247
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
std::vector< T > m_ExpectedData
armnn::PredicateResult CompareTensors(const std::vector< T > &actualData, const std::vector< T > &expectedData, const armnn::TensorShape &actualShape, const armnn::TensorShape &expectedShape, bool compareBoolean=false, bool isDynamic=false)
TEST_SUITE("ClMemCopy")
std::vector< T > m_ActualData
armnn::TensorShape m_ActualShape