blob: 1863c1c98c9a79764bb2c2acd54326c7d16f2a3d [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
44 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override
45 {
46 static ILayerSupportSharedPtr layerSupport{new SampleDynamicLayerSupport};
47 return layerSupport;
48 }
49
50 IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override
51 {
52 return IBackendContextPtr{};
53 }
54
55 OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override
56 {
57 OptimizationViews optimizationViews;
58
59 optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));
60
61 return optimizationViews;
62 }
63
64};
65
66} // namespace armnn
67
68const char* GetBackendId()
69{
70 return armnn::SampleDynamicBackend::GetIdStatic().Get().c_str();
71}
72
73void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
74{
75 if (!outMajor || !outMinor)
76 {
77 return;
78 }
79
80 armnn::BackendVersion apiVersion = armnn::IBackendInternal::GetApiVersion();
81
82 *outMajor = apiVersion.m_Major;
83 *outMinor = apiVersion.m_Minor;
84}
85
86void* BackendFactory()
87{
88 return new armnn::SampleDynamicBackend();
89}
90
91