blob: ade27dd7332c99363cb5a63700ce5a9f17f4d6a5 [file] [log] [blame]
Ferran Balaguerbfeb2712019-08-07 15:14:56 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "RefTensorHandleFactory.hpp"
7#include "RefTensorHandle.hpp"
8
Jan Eilers8eb25602020-03-09 12:13:48 +00009#include <armnn/utility/IgnoreUnused.hpp>
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010010
11namespace armnn
12{
13
14using FactoryId = ITensorHandleFactory::FactoryId;
15
16const FactoryId& RefTensorHandleFactory::GetIdStatic()
17{
18 static const FactoryId s_Id(RefTensorHandleFactoryId());
19 return s_Id;
20}
21
22std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateSubTensorHandle(ITensorHandle& parent,
23 TensorShape const& subTensorShape,
24 unsigned int const* subTensorOrigin) const
25{
Jan Eilers8eb25602020-03-09 12:13:48 +000026 IgnoreUnused(parent, subTensorShape, subTensorOrigin);
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010027 return nullptr;
28}
29
David Monahanc6e5a6e2019-10-02 09:33:57 +010030std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010031{
Narumol Prangnawarat3b90af62020-06-26 11:00:21 +010032 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010033}
34
35std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
David Monahanc6e5a6e2019-10-02 09:33:57 +010036 DataLayout dataLayout) const
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010037{
Jan Eilers8eb25602020-03-09 12:13:48 +000038 IgnoreUnused(dataLayout);
Narumol Prangnawarat3b90af62020-06-26 11:00:21 +010039 return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
40}
41
42std::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, m_ImportFlags);
52 }
53}
54
55std::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, m_ImportFlags);
67 }
Ferran Balaguerbfeb2712019-08-07 15:14:56 +010068}
69
70const FactoryId& RefTensorHandleFactory::GetId() const
71{
72 return GetIdStatic();
73}
74
75bool RefTensorHandleFactory::SupportsSubTensors() const
76{
77 return false;
78}
79
80MemorySourceFlags RefTensorHandleFactory::GetExportFlags() const
81{
82 return m_ExportFlags;
83}
84
85MemorySourceFlags RefTensorHandleFactory::GetImportFlags() const
86{
87 return m_ImportFlags;
88}
89
90} // namespace armnn