1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "RefTensorHandleFactory.hpp"
7 #include "RefTensorHandle.hpp"
8
9 #include <armnn/utility/IgnoreUnused.hpp>
10
11 namespace armnn
12 {
13
14 using FactoryId = ITensorHandleFactory::FactoryId;
15
GetIdStatic()16 const FactoryId& RefTensorHandleFactory::GetIdStatic()
17 {
18 static const FactoryId s_Id(RefTensorHandleFactoryId());
19 return s_Id;
20 }
21
CreateSubTensorHandle(ITensorHandle & parent,TensorShape const & subTensorShape,unsigned int const * subTensorOrigin) const22 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateSubTensorHandle(ITensorHandle& parent,
23 TensorShape const& subTensorShape,
24 unsigned int const* subTensorOrigin) const
25 {
26 IgnoreUnused(parent, subTensorShape, subTensorOrigin);
27 return nullptr;
28 }
29
CreateTensorHandle(const TensorInfo & tensorInfo) const30 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
31 {
32 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
33 }
34
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout) const35 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
36 DataLayout dataLayout) const
37 {
38 IgnoreUnused(dataLayout);
39 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
40 }
41
CreateTensorHandle(const TensorInfo & tensorInfo,const bool IsMemoryManaged) const42 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
43 const bool IsMemoryManaged) const
44 {
45 if (IsMemoryManaged)
46 {
47 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
48 }
49 else
50 {
51 return std::make_unique<RefTensorHandle>(tensorInfo);
52 }
53 }
54
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout,const bool IsMemoryManaged) const55 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
56 DataLayout dataLayout,
57 const bool IsMemoryManaged) const
58 {
59 IgnoreUnused(dataLayout);
60 if (IsMemoryManaged)
61 {
62 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
63 }
64 else
65 {
66 return std::make_unique<RefTensorHandle>(tensorInfo);
67 }
68 }
69
GetId() const70 const FactoryId& RefTensorHandleFactory::GetId() const
71 {
72 return GetIdStatic();
73 }
74
SupportsSubTensors() const75 bool RefTensorHandleFactory::SupportsSubTensors() const
76 {
77 return false;
78 }
79
GetExportFlags() const80 MemorySourceFlags RefTensorHandleFactory::GetExportFlags() const
81 {
82 return m_ExportFlags;
83 }
84
GetImportFlags() const85 MemorySourceFlags RefTensorHandleFactory::GetImportFlags() const
86 {
87 return m_ImportFlags;
88 }
89
90 } // namespace armnn
91