aboutsummaryrefslogtreecommitdiff
path: root/src/dynamic/sample/SampleDynamicBackend.cpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2020-02-03 12:29:56 +0000
committerJim Flynn <jim.flynn@arm.com>2020-02-03 16:36:55 +0000
commit867eba59ffd2276086a14f7b2632b390c94392d3 (patch)
treed7626f933f2a72e8c398c0f43c71b4950e980a09 /src/dynamic/sample/SampleDynamicBackend.cpp
parent9d0ff74843b9d36d9f233d208e18a96de1b7d47b (diff)
downloadarmnn-867eba59ffd2276086a14f7b2632b390c94392d3.tar.gz
IVGCVSW-4399 Create Sample Dynamic backend
* Move IWorkload and WorkloadInfo to include/armnn/backends * Add simple sample dynamic backend with addition workload * Add sample example to run dynamic backend * Unit tests Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I0753ce35b8e8a6223a1471388b49246d82438a44
Diffstat (limited to 'src/dynamic/sample/SampleDynamicBackend.cpp')
-rw-r--r--src/dynamic/sample/SampleDynamicBackend.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/dynamic/sample/SampleDynamicBackend.cpp b/src/dynamic/sample/SampleDynamicBackend.cpp
new file mode 100644
index 0000000000..1863c1c98c
--- /dev/null
+++ b/src/dynamic/sample/SampleDynamicBackend.cpp
@@ -0,0 +1,91 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "SampleDynamicBackend.hpp"
+#include "SampleDynamicLayerSupport.hpp"
+#include "SampleDynamicWorkloadFactory.hpp"
+#include "SampleMemoryManager.hpp"
+
+#include <armnn/backends/IBackendInternal.hpp>
+#include <armnn/backends/OptimizationViews.hpp>
+
+namespace armnn
+{
+
+constexpr const char * SampleDynamicBackendId() { return "SampleDynamic"; }
+
+class SampleDynamicBackend : public IBackendInternal
+{
+public:
+ SampleDynamicBackend() = default;
+ ~SampleDynamicBackend() = default;
+
+ static const BackendId& GetIdStatic()
+ {
+ static const BackendId s_Id{SampleDynamicBackendId()};
+ return s_Id;
+ }
+
+ const BackendId& GetId() const override { return GetIdStatic(); }
+
+ IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override
+ {
+ return std::make_unique<SampleMemoryManager>();
+ }
+
+ IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
+ const IMemoryManagerSharedPtr& memoryManager) const override
+ {
+ return std::make_unique<SampleDynamicWorkloadFactory>();
+ }
+
+ IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override
+ {
+ static ILayerSupportSharedPtr layerSupport{new SampleDynamicLayerSupport};
+ return layerSupport;
+ }
+
+ IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override
+ {
+ return IBackendContextPtr{};
+ }
+
+ OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override
+ {
+ OptimizationViews optimizationViews;
+
+ optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));
+
+ return optimizationViews;
+ }
+
+};
+
+} // namespace armnn
+
+const char* GetBackendId()
+{
+ return armnn::SampleDynamicBackend::GetIdStatic().Get().c_str();
+}
+
+void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
+{
+ if (!outMajor || !outMinor)
+ {
+ return;
+ }
+
+ armnn::BackendVersion apiVersion = armnn::IBackendInternal::GetApiVersion();
+
+ *outMajor = apiVersion.m_Major;
+ *outMinor = apiVersion.m_Minor;
+}
+
+void* BackendFactory()
+{
+ return new armnn::SampleDynamicBackend();
+}
+
+