diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-02-03 12:29:56 +0000 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2020-02-03 16:36:55 +0000 |
commit | 867eba59ffd2276086a14f7b2632b390c94392d3 (patch) | |
tree | d7626f933f2a72e8c398c0f43c71b4950e980a09 /src/dynamic/sample/SampleDynamicBackend.cpp | |
parent | 9d0ff74843b9d36d9f233d208e18a96de1b7d47b (diff) | |
download | armnn-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.cpp | 91 |
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(); +} + + |