// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include #include namespace armnn { IMemoryManagerUniquePtr IBackendInternal::CreateMemoryManager() const { return IMemoryManagerUniquePtr(); } IBackendInternal::IWorkloadFactoryPtr IBackendInternal::CreateWorkloadFactory( class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const { return IWorkloadFactoryPtr{}; } IBackendInternal::IWorkloadFactoryPtr IBackendInternal::CreateWorkloadFactory( const IMemoryManagerSharedPtr& memoryManager, const ModelOptions& modelOptions) const { if (!modelOptions.empty()) { for (auto optionsGroup : modelOptions) { if (optionsGroup.GetBackendId() == GetId()) { return IWorkloadFactoryPtr{}; } } } return CreateWorkloadFactory(memoryManager); } IBackendInternal::IWorkloadFactoryPtr IBackendInternal::CreateWorkloadFactory( class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry, const ModelOptions& modelOptions) const { if (!modelOptions.empty()) { for (auto optionsGroup : modelOptions) { if (optionsGroup.GetBackendId() == GetId()) { return IWorkloadFactoryPtr{}; } } } return CreateWorkloadFactory(tensorHandleFactoryRegistry); } IBackendInternal::IWorkloadFactoryPtr IBackendInternal::CreateWorkloadFactory( class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry, const ModelOptions& modelOptions, MemorySourceFlags inputFlags, MemorySourceFlags outputFlags) const { IgnoreUnused(inputFlags); IgnoreUnused(outputFlags); return CreateWorkloadFactory(tensorHandleFactoryRegistry, modelOptions); } IBackendInternal::IBackendContextPtr IBackendInternal::CreateBackendContext(const IRuntime::CreationOptions&) const { return IBackendContextPtr{}; } IBackendInternal::IBackendSpecificModelContextPtr IBackendInternal::CreateBackendSpecificModelContext( const ModelOptions&) const { return IBackendSpecificModelContextPtr{}; } IBackendInternal::IBackendProfilingContextPtr IBackendInternal::CreateBackendProfilingContext( const IRuntime::CreationOptions&, IBackendProfilingPtr&) { return IBackendProfilingContextPtr{}; } IBackendInternal::ILayerSupportSharedPtr IBackendInternal::GetLayerSupport(const ModelOptions& modelOptions) const { if (!modelOptions.empty()) { for (auto optionsGroup : modelOptions) { if (optionsGroup.GetBackendId() == GetId()) { return ILayerSupportSharedPtr{}; } } } return GetLayerSupport(); } // Default implementation of OptimizeSubgraphView. Returns an untouched subgraph. // Override this method with a custom optimization implementation. OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph) const { OptimizationViews result; result.AddUntouchedSubgraph(SubgraphView(subgraph)); return result; } OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph, const ModelOptions& /*modelOptions*/) const { return OptimizeSubgraphView(subgraph); } bool IBackendInternal::SupportsTensorAllocatorAPI() const { return !GetHandleFactoryPreferences().empty(); } void IBackendInternal::RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry, MemorySourceFlags /*inputFlags*/, MemorySourceFlags /*outputFlags*/) { return RegisterTensorHandleFactories(registry); } ITensorHandleFactory::FactoryId IBackendInternal::GetBackwardCompatibleFavoriteHandleFactory() { auto favorites = GetHandleFactoryPreferences(); if (favorites.empty()) { return ITensorHandleFactory::LegacyFactoryId; } return favorites[0]; } std::vector IBackendInternal::GetHandleFactoryPreferences() const { return std::vector(); } } // namespace armnn