blob: b433e27f11e4e34a22ffbff84edc809e2cc6ca73 [file] [log] [blame]
Narumol Prangnawarat867eba52020-02-03 12:29:56 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "SampleDynamicBackend.hpp"
7#include "SampleDynamicLayerSupport.hpp"
8#include "SampleDynamicWorkloadFactory.hpp"
9#include "SampleMemoryManager.hpp"
10
11#include <armnn/backends/IBackendInternal.hpp>
12#include <armnn/backends/OptimizationViews.hpp>
13
14namespace armnn
15{
16
17constexpr const char * SampleDynamicBackendId() { return "SampleDynamic"; }
18
19class SampleDynamicBackend : public IBackendInternal
20{
21public:
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
Narumol Prangnawarat9c308962020-02-04 14:45:41 +000044 IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
45 class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const override
46 {
47 return IWorkloadFactoryPtr{};
48 }
49
50 IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(
51 const IRuntime::CreationOptions&, armnn::profiling::IBackendProfiling&) const override
52 {
53 return IBackendProfilingContextPtr{};
54 }
55
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000056 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override
57 {
58 static ILayerSupportSharedPtr layerSupport{new SampleDynamicLayerSupport};
59 return layerSupport;
60 }
61
Narumol Prangnawarat9c308962020-02-04 14:45:41 +000062 std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const override
63 {
64 return std::vector<ITensorHandleFactory::FactoryId>();
65 }
66
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000067 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 }
Narumol Prangnawarat867eba52020-02-03 12:29:56 +000080};
81
82} // namespace armnn
83
84const char* GetBackendId()
85{
86 return armnn::SampleDynamicBackend::GetIdStatic().Get().c_str();
87}
88
89void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
90{
91 if (!outMajor || !outMinor)
92 {
93 return;
94 }
95
96 armnn::BackendVersion apiVersion = armnn::IBackendInternal::GetApiVersion();
97
98 *outMajor = apiVersion.m_Major;
99 *outMinor = apiVersion.m_Minor;
100}
101
102void* BackendFactory()
103{
104 return new armnn::SampleDynamicBackend();
105}
106
107