// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "RefBackend.hpp" #include "RefBackendId.hpp" #include "RefWorkloadFactory.hpp" #include "RefLayerSupport.hpp" #include "RefTensorHandleFactory.hpp" #include #include #include #include #include #include namespace armnn { const BackendId& RefBackend::GetIdStatic() { static const BackendId s_Id{RefBackendId()}; return s_Id; } IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory( const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const { return std::make_unique(boost::polymorphic_pointer_downcast(memoryManager)); } IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory( class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const { auto memoryManager = std::make_shared(); tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager); return std::make_unique(boost::polymorphic_pointer_downcast(memoryManager)); } IBackendInternal::IBackendContextPtr RefBackend::CreateBackendContext(const IRuntime::CreationOptions&) const { return IBackendContextPtr{}; } IBackendInternal::IMemoryManagerUniquePtr RefBackend::CreateMemoryManager() const { return std::make_unique(); } IBackendInternal::Optimizations RefBackend::GetOptimizations() const { return Optimizations{}; } IBackendInternal::ILayerSupportSharedPtr RefBackend::GetLayerSupport() const { static ILayerSupportSharedPtr layerSupport{new RefLayerSupport}; return layerSupport; } OptimizationViews RefBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const { OptimizationViews optimizationViews; optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph)); return optimizationViews; } std::vector RefBackend::GetHandleFactoryPreferences() const { return std::vector { RefTensorHandleFactory::GetIdStatic() }; } void RefBackend::RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) { auto memoryManager = std::make_shared(); registry.RegisterMemoryManager(memoryManager); registry.RegisterFactory(std::make_unique(memoryManager)); } } // namespace armnn