// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "SampleDynamicBackend.hpp" #include "SampleDynamicLayerSupport.hpp" #include "SampleDynamicWorkloadFactory.hpp" #include "SampleMemoryManager.hpp" #include #include 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(); } IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory( const IMemoryManagerSharedPtr& memoryManager) const override { return std::make_unique(); } IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory( class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const override { return IWorkloadFactoryPtr{}; } IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext( const IRuntime::CreationOptions&, IBackendProfilingPtr&) override { return IBackendProfilingContextPtr{}; } IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override { static ILayerSupportSharedPtr layerSupport{new SampleDynamicLayerSupport}; return layerSupport; } std::vector GetHandleFactoryPreferences() const override { return std::vector(); } 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(); }