1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <armnn/backends/IBackendInternal.hpp> 8 9 namespace armnn 10 { 11 12 class NeonBackend : public IBackendInternal 13 { 14 public: 15 NeonBackend() = default; 16 ~NeonBackend() = default; 17 18 static const BackendId& GetIdStatic(); GetId() const19 const BackendId& GetId() const override { return GetIdStatic(); } 20 21 IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override; 22 23 IWorkloadFactoryPtr CreateWorkloadFactory( 24 const IBackendInternal::IMemoryManagerSharedPtr& memoryManager = nullptr) const override; 25 26 IWorkloadFactoryPtr CreateWorkloadFactory( 27 class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const override; 28 29 IWorkloadFactoryPtr CreateWorkloadFactory( const IMemoryManagerSharedPtr& memoryManager, 30 const ModelOptions& modelOptions) const override; 31 32 IWorkloadFactoryPtr CreateWorkloadFactory(class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry, 33 const ModelOptions& modelOptions) const override; 34 35 IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override; 36 IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext( 37 const IRuntime::CreationOptions&, IBackendProfilingPtr& backendProfiling) override; 38 IBackendInternal::Optimizations GetOptimizations() const override; 39 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; 40 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport(const ModelOptions& modelOptions) const override; 41 42 OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override; 43 44 std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const override; 45 46 void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) override; 47 48 IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext( 49 const ModelOptions& modelOptions) const override; 50 }; 51 52 } // namespace armnn 53