ArmNN
 22.05.01
NeonMemCopyTests.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "../NeonWorkloadFactory.hpp"
7 #include <neon/NeonBackend.hpp>
11 #include <doctest/doctest.h>
12 
13 namespace
14 {
15 
16 template <>
17 struct MemCopyTestHelper<armnn::NeonWorkloadFactory>
18 {
19  static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20  {
21  armnn::NeonBackend backend;
22  return backend.CreateMemoryManager();
23  }
24 
25  static armnn::NeonWorkloadFactory GetFactory(
27  const armnn::ModelOptions& modelOptions = {})
28  {
29  armnn::NeonBackend backend;
30  return armnn::NeonWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager),
31  backend.CreateBackendSpecificModelContext(modelOptions));
32  }
33 };
34 } // namespace
35 
36 
37 TEST_SUITE("NeonMemCopy")
38 {
39 TEST_CASE("CopyBetweenCpuAndNeon")
40 {
42  MemCopyTest<armnn::MockWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(false);
43  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
44  result.m_ActualShape, result.m_ExpectedShape);
45  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
46 }
47 
48 TEST_CASE("CopyBetweenNeonAndCpu")
49 {
51  MemCopyTest<armnn::NeonWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
52  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
53  result.m_ActualShape, result.m_ExpectedShape);
54  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
55 }
56 
57 TEST_CASE("CopyBetweenCpuAndNeonWithSubtensors")
58 {
60  MemCopyTest<armnn::MockWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(true);
61  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
62  result.m_ActualShape, result.m_ExpectedShape);
63  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
64 }
65 
66 TEST_CASE("CopyBetweenNeonAndCpuWithSubtensors")
67 {
69  MemCopyTest<armnn::NeonWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
70  auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
71  result.m_ActualShape, result.m_ExpectedShape);
72  CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
73 }
74 
75 }
armnn::TensorShape m_ExpectedShape
std::vector< BackendOptions > ModelOptions
Copyright (c) 2021 ARM Limited and Contributors.
TEST_SUITE("NeonMemCopy")
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
std::vector< T > m_ExpectedData
IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext(const ModelOptions &modelOptions) const override
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)
std::vector< T > m_ActualData
armnn::TensorShape m_ActualShape
IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override
Definition: NeonBackend.cpp:50