1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "SampleDynamicTensorHandleFactory.hpp"
7 #include "SampleTensorHandle.hpp"
8
9 #include <armnn/utility/IgnoreUnused.hpp>
10
11 namespace sdb // sample dynamic backend
12 {
13
14 using FactoryId = armnn::ITensorHandleFactory::FactoryId;
15
GetIdStatic()16 const FactoryId& SampleDynamicTensorHandleFactory::GetIdStatic()
17 {
18 static const FactoryId s_Id(SampleDynamicTensorHandleFactoryId());
19 return s_Id;
20 }
21
22 std::unique_ptr<armnn::ITensorHandle>
CreateSubTensorHandle(armnn::ITensorHandle & parent,armnn::TensorShape const & subTensorShape,unsigned int const * subTensorOrigin) const23 SampleDynamicTensorHandleFactory::CreateSubTensorHandle(armnn::ITensorHandle& parent,
24 armnn::TensorShape const& subTensorShape,
25 unsigned int const* subTensorOrigin) const
26 {
27 IgnoreUnused(parent, subTensorShape, subTensorOrigin);
28 return nullptr;
29 }
30
CreateTensorHandle(const armnn::TensorInfo & tensorInfo) const31 std::unique_ptr<armnn::ITensorHandle> SampleDynamicTensorHandleFactory::CreateTensorHandle(
32 const armnn::TensorInfo& tensorInfo) const
33 {
34 return std::make_unique<SampleTensorHandle>(tensorInfo, m_MemoryManager);
35 }
36
CreateTensorHandle(const armnn::TensorInfo & tensorInfo,armnn::DataLayout dataLayout) const37 std::unique_ptr<armnn::ITensorHandle> SampleDynamicTensorHandleFactory::CreateTensorHandle(
38 const armnn::TensorInfo& tensorInfo,
39 armnn::DataLayout dataLayout) const
40 {
41 IgnoreUnused(dataLayout);
42 return std::make_unique<SampleTensorHandle>(tensorInfo, m_MemoryManager);
43 }
44
CreateTensorHandle(const armnn::TensorInfo & tensorInfo,const bool IsMemoryManaged) const45 std::unique_ptr<armnn::ITensorHandle> SampleDynamicTensorHandleFactory::CreateTensorHandle(
46 const armnn::TensorInfo& tensorInfo,
47 const bool IsMemoryManaged) const
48 {
49 if (IsMemoryManaged)
50 {
51 return std::make_unique<SampleTensorHandle>(tensorInfo, m_MemoryManager);
52 }
53 else
54 {
55 return std::make_unique<SampleTensorHandle>(tensorInfo, m_ImportFlags);
56 }
57 }
58
CreateTensorHandle(const armnn::TensorInfo & tensorInfo,armnn::DataLayout dataLayout,const bool IsMemoryManaged) const59 std::unique_ptr<armnn::ITensorHandle> SampleDynamicTensorHandleFactory::CreateTensorHandle(
60 const armnn::TensorInfo& tensorInfo,
61 armnn::DataLayout dataLayout,
62 const bool IsMemoryManaged) const
63 {
64 IgnoreUnused(dataLayout);
65 if (IsMemoryManaged)
66 {
67 return std::make_unique<SampleTensorHandle>(tensorInfo, m_MemoryManager);
68 }
69 else
70 {
71 return std::make_unique<SampleTensorHandle>(tensorInfo, m_ImportFlags);
72 }
73 }
74
GetId() const75 const FactoryId& SampleDynamicTensorHandleFactory::GetId() const
76 {
77 return GetIdStatic();
78 }
79
SupportsSubTensors() const80 bool SampleDynamicTensorHandleFactory::SupportsSubTensors() const
81 {
82 return false;
83 }
84
GetExportFlags() const85 armnn::MemorySourceFlags SampleDynamicTensorHandleFactory::GetExportFlags() const
86 {
87 return m_ExportFlags;
88 }
89
GetImportFlags() const90 armnn::MemorySourceFlags SampleDynamicTensorHandleFactory::GetImportFlags() const
91 {
92 return m_ImportFlags;
93 }
94
95 } // namespace sdb