21.08
|
#include <ClBackend.hpp>
Classes | |
class | ClBackendCustomAllocatorMemoryRegion |
class | ClBackendCustomAllocatorWrapper |
Public Member Functions | |
ClBackend () | |
ClBackend (std::shared_ptr< ICustomAllocator > allocator) | |
~ClBackend ()=default | |
const BackendId & | GetId () const override |
IBackendInternal::IMemoryManagerUniquePtr | CreateMemoryManager () const override |
IBackendInternal::IWorkloadFactoryPtr | CreateWorkloadFactory (const IBackendInternal::IMemoryManagerSharedPtr &memoryManager=nullptr) const override |
IBackendInternal::IWorkloadFactoryPtr | CreateWorkloadFactory (TensorHandleFactoryRegistry ®istry) const override |
IWorkloadFactoryPtr | CreateWorkloadFactory (const IMemoryManagerSharedPtr &memoryManager, const ModelOptions &modelOptions) const override |
IWorkloadFactoryPtr | CreateWorkloadFactory (class TensorHandleFactoryRegistry &tensorHandleFactoryRegistry, const ModelOptions &modelOptions) const override |
IWorkloadFactoryPtr | CreateWorkloadFactory (class TensorHandleFactoryRegistry &tensorHandleFactoryRegistry, const ModelOptions &modelOptions, MemorySourceFlags inputFlags, MemorySourceFlags outputFlags) const override |
std::vector< ITensorHandleFactory::FactoryId > | GetHandleFactoryPreferences () const override |
(Optional) Returns a vector of supported TensorHandleFactory ids in preference order. More... | |
void | RegisterTensorHandleFactories (TensorHandleFactoryRegistry ®istry) override |
(Optional) Register TensorHandleFactories Either this method or CreateMemoryManager() and IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented. More... | |
void | RegisterTensorHandleFactories (TensorHandleFactoryRegistry ®istry, MemorySourceFlags inputFlags, MemorySourceFlags outputFlags) override |
(Optional) Register TensorHandleFactories Either this method or CreateMemoryManager() and IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented. More... | |
IBackendInternal::IBackendContextPtr | CreateBackendContext (const IRuntime::CreationOptions &) const override |
Create the runtime context of the backend. More... | |
IBackendInternal::IBackendProfilingContextPtr | CreateBackendProfilingContext (const IRuntime::CreationOptions &, IBackendProfilingPtr &backendProfiling) override |
Create context specifically used for profiling interaction from backends. More... | |
IBackendInternal::Optimizations | GetOptimizations () const override |
IBackendInternal::ILayerSupportSharedPtr | GetLayerSupport () const override |
IBackendInternal::ILayerSupportSharedPtr | GetLayerSupport (const ModelOptions &modelOptions) const override |
OptimizationViews | OptimizeSubgraphView (const SubgraphView &subgraph, const ModelOptions &modelOptions) const override |
IBackendInternal::IBackendSpecificModelContextPtr | CreateBackendSpecificModelContext (const ModelOptions &modelOptions) const override |
BackendCapabilities | GetCapabilities () const override |
Returns a BackendCapability if the backend lists the capability The BackendCapability must then be inspected to check whether or not that BackendCapability is supported Otherwise returns an EmptyOptional if the BackendCapability is unlisted. More... | |
virtual bool | UseCustomMemoryAllocator (std::shared_ptr< ICustomAllocator > allocator, armnn::Optional< std::string &> errMsg) override |
Signals the backend to use a custom memory allocator provided by the user. More... | |
Public Member Functions inherited from IBackendInternal | |
~IBackendInternal () override=default | |
Allow backends created by the factory function to be destroyed through IBackendInternal. More... | |
virtual ISubGraphConverterPtr | CreateSubGraphConverter (const std::shared_ptr< SubGraph > &subGraph) const |
virtual SubGraphUniquePtr | OptimizeSubGraph (const SubGraph &subGraph, bool &optimizationAttempted) const |
virtual OptimizationViews | OptimizeSubgraphView (const SubgraphView &subgraph) const |
bool | SupportsTensorAllocatorAPI () const |
ITensorHandleFactory::FactoryId | GetBackwardCompatibleFavoriteHandleFactory () |
virtual bool | HasCapability (BackendCapability) const |
Returns true if backend support the capability false otherwise. More... | |
Static Public Member Functions | |
static const BackendId & | GetIdStatic () |
Static Public Member Functions inherited from IBackendInternal | |
static constexpr BackendVersion | GetApiVersion () |
Returns the version of the Backend API. More... | |
Public Attributes | |
std::shared_ptr< ClBackendCustomAllocatorWrapper > | m_CustomAllocator |
bool | m_UsingCustomAllocator = false |
Additional Inherited Members | |
Public Types inherited from IBackendInternal | |
using | IWorkloadFactoryPtr = std::unique_ptr< IWorkloadFactory > |
using | IBackendContextPtr = std::unique_ptr< IBackendContext > |
using | IBackendProfilingContextPtr = std::shared_ptr< armnn::profiling::IBackendProfilingContext > |
This is the bridge between backend and backend profiling we'll keep it in the backend namespace. More... | |
using | IBackendProfilingPtr = std::unique_ptr< armnn::profiling::IBackendProfiling > |
using | OptimizationPtr = std::unique_ptr< Optimization > |
using | Optimizations = std::vector< OptimizationPtr > |
using | ILayerSupportSharedPtr = std::shared_ptr< ILayerSupport > |
using | IBackendSpecificModelContextPtr = std::shared_ptr< IBackendModelContext > |
using | IMemoryManagerUniquePtr = std::unique_ptr< IMemoryManager > |
using | IMemoryManagerSharedPtr = std::shared_ptr< IMemoryManager > |
using | GraphUniquePtr = std::unique_ptr< Graph > |
using | SubgraphViewUniquePtr = std::unique_ptr< SubgraphView > |
using | supported = std::unique_ptr< ISubGraphConverter > |
using | instead = std::unique_ptr< SubGraph > |
Protected Member Functions inherited from IBackendInternal | |
IBackendInternal ()=default | |
Creation must be done through a specific backend interface. More... | |
Protected Member Functions inherited from IBackend | |
IBackend () | |
virtual | ~IBackend () |
Definition at line 32 of file ClBackend.hpp.
|
inline |
Definition at line 35 of file ClBackend.hpp.
|
inline |
Definition at line 36 of file ClBackend.hpp.
References ClBackend::GetIdStatic(), ClBackend::UseCustomMemoryAllocator(), and ClBackend::~ClBackend().
|
default |
Referenced by ClBackend::ClBackend().
|
overridevirtual |
Create the runtime context of the backend.
Implementations may return a default-constructed IBackendContextPtr if no context is needed at runtime. Implementations must throw BackendUnavailableException if the backend cannot be used (for example, necessary accelerator hardware is not present). The default implementation always returns a default-constructed pointer.
Reimplemented from IBackendInternal.
Definition at line 184 of file ClBackend.cpp.
Referenced by ClBackend::GetId().
|
overridevirtual |
Create context specifically used for profiling interaction from backends.
Reimplemented from IBackendInternal.
Definition at line 189 of file ClBackend.cpp.
Referenced by ClBackend::GetId().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 200 of file ClBackend.cpp.
Referenced by ClBackend::CreateWorkloadFactory(), ClBackend::GetId(), ClBackend::GetLayerSupport(), and ClBackend::OptimizeSubgraphView().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 50 of file ClBackend.cpp.
References ClBackend::m_CustomAllocator, and ClBackend::m_UsingCustomAllocator.
Referenced by ClBackend::GetId().
|
overridevirtual |
Implements IBackendInternal.
Definition at line 59 of file ClBackend.cpp.
Referenced by ClBackend::GetId().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 73 of file ClBackend.cpp.
References ClBackend::m_CustomAllocator, ClBackend::m_UsingCustomAllocator, armnn::Malloc, TensorHandleFactoryRegistry::RegisterFactory(), and TensorHandleFactoryRegistry::RegisterMemoryManager().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 66 of file ClBackend.cpp.
References ClBackend::CreateBackendSpecificModelContext().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 95 of file ClBackend.cpp.
References ClBackend::CreateBackendSpecificModelContext(), ClBackend::m_CustomAllocator, ClBackend::m_UsingCustomAllocator, armnn::Malloc, TensorHandleFactoryRegistry::RegisterFactory(), and TensorHandleFactoryRegistry::RegisterMemoryManager().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 117 of file ClBackend.cpp.
References ClBackend::CreateBackendSpecificModelContext(), ClBackend::m_CustomAllocator, ClBackend::m_UsingCustomAllocator, TensorHandleFactoryRegistry::RegisterFactory(), and TensorHandleFactoryRegistry::RegisterMemoryManager().
|
inlineoverridevirtual |
Returns a BackendCapability if the backend lists the capability The BackendCapability must then be inspected to check whether or not that BackendCapability is supported Otherwise returns an EmptyOptional if the BackendCapability is unlisted.
Reimplemented from IBackendInternal.
Definition at line 87 of file ClBackend.hpp.
References armnn::gpuAccCapabilities.
|
overridevirtual |
(Optional) Returns a vector of supported TensorHandleFactory ids in preference order.
Reimplemented from IBackendInternal.
Definition at line 141 of file ClBackend.cpp.
References ClTensorHandleFactory::GetIdStatic(), and ClImportTensorHandleFactory::GetIdStatic().
Referenced by ClBackend::GetId().
|
inlineoverridevirtual |
Implements IBackend.
Definition at line 44 of file ClBackend.hpp.
References ClBackend::CreateBackendContext(), ClBackend::CreateBackendProfilingContext(), ClBackend::CreateBackendSpecificModelContext(), ClBackend::CreateMemoryManager(), ClBackend::CreateWorkloadFactory(), ClBackend::GetHandleFactoryPreferences(), ClBackend::GetIdStatic(), ClBackend::GetLayerSupport(), ClBackend::GetOptimizations(), ClBackend::OptimizeSubgraphView(), and ClBackend::RegisterTensorHandleFactories().
|
static |
Definition at line 44 of file ClBackend.cpp.
References armnn::ClBackendId().
Referenced by ClBackend::ClBackend(), and ClBackend::GetId().
|
overridevirtual |
Implements IBackendInternal.
Definition at line 206 of file ClBackend.cpp.
Referenced by ClBackend::GetId().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 215 of file ClBackend.cpp.
References ClBackend::CreateBackendSpecificModelContext().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 195 of file ClBackend.cpp.
Referenced by ClBackend::GetId().
|
overridevirtual |
Reimplemented from IBackendInternal.
Definition at line 224 of file ClBackend.cpp.
References armnn::Activation, armnn::Addition, OptimizationViews::AddUntouchedSubgraph(), armnn::BatchNormalization, SubgraphView::begin(), Layer::BeginOutputSlots(), armnn::ClAdditionValidate(), armnn::ClBatchNormalizationValidate(), armnn::ClConvolution2dWorkloadValidate(), armnn::ClDepthwiseConvolutionWorkloadValidate(), armnn::ClDivisionWorkloadValidate(), armnn::ClFullyConnectedWorkloadValidate(), armnn::ClMultiplicationWorkloadValidate(), armnn::ClSubtractionValidate(), armnn::Convolution2d, ClBackend::CreateBackendSpecificModelContext(), armnn::DepthwiseConvolution2d, armnn::Division, SubgraphView::end(), Layer::EndOutputSlots(), armnn::FullyConnected, Layer::GetAdditionalInformation(), InputSlot::GetConnectedOutputSlot(), Layer::GetGuid(), Layer::GetInputSlot(), Layer::GetName(), LayerWithParameters< Parameters >::GetParameters(), OptimizationViews::GetSubstitutions(), OutputSlot::GetTensorInfo(), Layer::GetType(), ClBackendModelContext::IsFastMathEnabled(), BatchNormalizationLayer::m_Beta, DepthwiseConvolution2dLayer::m_Bias, Convolution2dLayer::m_Bias, FullyConnectedLayer::m_Bias, Convolution2dDescriptor::m_BiasEnabled, DepthwiseConvolution2dDescriptor::m_BiasEnabled, BatchNormalizationLayer::m_Gamma, BatchNormalizationLayer::m_Mean, BatchNormalizationLayer::m_Variance, DepthwiseConvolution2dLayer::m_Weight, FullyConnectedLayer::m_Weight, Convolution2dLayer::m_Weight, armnn::Multiplication, armnn::Reduce, armnn::ReportUntouchedLayers(), and armnn::Subtraction.
Referenced by ClBackend::GetId().
|
overridevirtual |
(Optional) Register TensorHandleFactories Either this method or CreateMemoryManager() and IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented.
Reimplemented from IBackendInternal.
Definition at line 147 of file ClBackend.cpp.
References ClBackend::m_CustomAllocator, ClBackend::m_UsingCustomAllocator, armnn::Malloc, TensorHandleFactoryRegistry::RegisterFactory(), and TensorHandleFactoryRegistry::RegisterMemoryManager().
Referenced by ClBackend::GetId().
|
overridevirtual |
(Optional) Register TensorHandleFactories Either this method or CreateMemoryManager() and IWorkloadFactory::CreateTensor()/IWorkloadFactory::CreateSubtensor() methods must be implemented.
Reimplemented from IBackendInternal.
Definition at line 165 of file ClBackend.cpp.
References ClBackend::m_CustomAllocator, ClBackend::m_UsingCustomAllocator, TensorHandleFactoryRegistry::RegisterFactory(), and TensorHandleFactoryRegistry::RegisterMemoryManager().
|
inlineoverridevirtual |
Signals the backend to use a custom memory allocator provided by the user.
allocator | - a pointer to the provided ICustomAllocator to use with this backend |
errMsg | - Optional string variable to return error messages |
Reimplemented from IBackendInternal.
Definition at line 92 of file ClBackend.hpp.
References ARMNN_LOG, armnn::IgnoreUnused(), armnn::info, ClBackend::m_CustomAllocator, and ClBackend::m_UsingCustomAllocator.
Referenced by ClBackend::ClBackend().
std::shared_ptr<ClBackendCustomAllocatorWrapper> m_CustomAllocator |
Definition at line 291 of file ClBackend.hpp.
Referenced by ClBackend::CreateMemoryManager(), ClBackend::CreateWorkloadFactory(), ClBackend::RegisterTensorHandleFactories(), and ClBackend::UseCustomMemoryAllocator().
bool m_UsingCustomAllocator = false |
Definition at line 292 of file ClBackend.hpp.
Referenced by ClBackend::CreateMemoryManager(), ClBackend::CreateWorkloadFactory(), ClBackend::RegisterTensorHandleFactories(), and ClBackend::UseCustomMemoryAllocator().