ArmNN
 20.02
SampleDynamicBackend.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
10 
13 
14 namespace armnn
15 {
16 
17 constexpr const char * SampleDynamicBackendId() { return "SampleDynamic"; }
18 
19 class SampleDynamicBackend : public IBackendInternal
20 {
21 public:
22  SampleDynamicBackend() = default;
23  ~SampleDynamicBackend() = default;
24 
25  static const BackendId& GetIdStatic()
26  {
27  static const BackendId s_Id{SampleDynamicBackendId()};
28  return s_Id;
29  }
30 
31  const BackendId& GetId() const override { return GetIdStatic(); }
32 
33  IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override
34  {
35  return std::make_unique<SampleMemoryManager>();
36  }
37 
38  IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
39  const IMemoryManagerSharedPtr& memoryManager) const override
40  {
41  return std::make_unique<SampleDynamicWorkloadFactory>();
42  }
43 
44  IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
45  class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const override
46  {
47  return IWorkloadFactoryPtr{};
48  }
49 
50  IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(
51  const IRuntime::CreationOptions&, IBackendProfilingPtr&) override
52  {
53  return IBackendProfilingContextPtr{};
54  }
55 
56  IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override
57  {
58  static ILayerSupportSharedPtr layerSupport{new SampleDynamicLayerSupport};
59  return layerSupport;
60  }
61 
62  std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const override
63  {
64  return std::vector<ITensorHandleFactory::FactoryId>();
65  }
66 
67  IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override
68  {
69  return IBackendContextPtr{};
70  }
71 
72  OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override
73  {
74  OptimizationViews optimizationViews;
75 
76  optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));
77 
78  return optimizationViews;
79  }
80 };
81 
82 } // namespace armnn
83 
84 const char* GetBackendId()
85 {
86  return armnn::SampleDynamicBackend::GetIdStatic().Get().c_str();
87 }
88 
89 void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
90 {
91  if (!outMajor || !outMinor)
92  {
93  return;
94  }
95 
97 
98  *outMajor = apiVersion.m_Major;
99  *outMinor = apiVersion.m_Minor;
100 }
101 
103 {
104  return new armnn::SampleDynamicBackend();
105 }
106 
107 
constexpr const char * SampleDynamicBackendId()
std::unique_ptr< IWorkloadFactory > IWorkloadFactoryPtr
std::shared_ptr< ILayerSupport > ILayerSupportSharedPtr
Copyright (c) 2020 ARM Limited.
std::unique_ptr< IMemoryManager > IMemoryManagerUniquePtr
The SubgraphView class represents a subgraph of a Graph.
static constexpr BackendVersion GetApiVersion()
Returns the version of the Backend API.
void AddUntouchedSubgraph(SubgraphView &&subgraph)
std::shared_ptr< ILayerSupport > ILayerSupportSharedPtr
void GetVersion(uint32_t *outMajor, uint32_t *outMinor)
void * BackendFactory()
const char * GetBackendId()
std::shared_ptr< armnn::profiling::IBackendProfilingContext > IBackendProfilingContextPtr
This is the bridge between backend and backend profiling we&#39;ll keep it in the backend namespace...
std::unique_ptr< IBackendContext > IBackendContextPtr