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 ClBackend : public IBackendInternal 13 { 14 public: 15 ClBackend() = default; 16 ~ClBackend() = 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 IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory( 24 const IBackendInternal::IMemoryManagerSharedPtr& memoryManager = nullptr) const override; 25 26 IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory( 27 TensorHandleFactoryRegistry& registry) 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 std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const override; 36 37 void RegisterTensorHandleFactories(TensorHandleFactoryRegistry& registry) override; 38 39 IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override; 40 IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext( 41 const IRuntime::CreationOptions&, IBackendProfilingPtr& backendProfiling) override; 42 43 IBackendInternal::Optimizations GetOptimizations() const override; 44 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; 45 IBackendInternal::ILayerSupportSharedPtr GetLayerSupport(const ModelOptions& modelOptions) const override; 46 47 OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph, 48 const ModelOptions& modelOptions) const override; 49 50 IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext( 51 const ModelOptions& modelOptions) const override; 52 }; 53 54 } // namespace armnn 55