ArmNN
 23.08
IWorkloadFactory Class Referenceabstract

#include <WorkloadFactory.hpp>

Inheritance diagram for IWorkloadFactory:
[legend]

Public Member Functions

virtual ~IWorkloadFactory ()
 
virtual void AfterWorkloadsCreated ()
 
virtual const BackendIdGetBackendId () const =0
 
virtual bool SupportsSubTensors () const =0
 
virtual std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const =0
 
virtual std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
 
virtual std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const =0
 
virtual std::unique_ptr< IWorkloadCreateWorkload (LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const =0
 Backends should implement their own CreateWorkload function with a switch statement. More...
 

Static Public Member Functions

static bool IsLayerSupported (const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
static bool IsLayerSupported (const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
static bool IsLayerSupported (const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported, const ModelOptions &modelOptions)
 
static bool IsLayerSupported (const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported, const ModelOptions &modelOptions)
 

Detailed Description

Definition at line 22 of file WorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ ~IWorkloadFactory()

virtual ~IWorkloadFactory ( )
inlinevirtual

Definition at line 25 of file WorkloadFactory.hpp.

25 { }

Member Function Documentation

◆ AfterWorkloadsCreated()

virtual void AfterWorkloadsCreated ( )
inlinevirtual

Reimplemented in ClWorkloadFactory.

Definition at line 27 of file WorkloadFactory.hpp.

27 {};

◆ CreateSubTensorHandle()

virtual std::unique_ptr<ITensorHandle> CreateSubTensorHandle ( ITensorHandle parent,
TensorShape const &  subTensorShape,
unsigned int const *  subTensorOrigin 
) const
pure virtual

◆ CreateTensorHandle() [1/2]

virtual std::unique_ptr<ITensorHandle> CreateTensorHandle ( const TensorInfo tensorInfo,
const bool  IsMemoryManaged = true 
) const
pure virtual

◆ CreateTensorHandle() [2/2]

virtual std::unique_ptr<ITensorHandle> CreateTensorHandle ( const TensorInfo tensorInfo,
DataLayout  dataLayout,
const bool  IsMemoryManaged = true 
) const
pure virtual

◆ CreateWorkload()

virtual std::unique_ptr<IWorkload> CreateWorkload ( LayerType  type,
const QueueDescriptor descriptor,
const WorkloadInfo info 
) const
pure virtual

Backends should implement their own CreateWorkload function with a switch statement.

The case for the switch should be the LayerType and based on that they will call their specific workload creation functionality.

Implemented in WorkloadFactoryBase, RefWorkloadFactory, ClWorkloadFactory, TosaRefWorkloadFactory, NeonWorkloadFactory, and SampleDynamicWorkloadFactory.

Referenced by ActivationLayer::CreateWorkload(), ConvertFp32ToFp16Layer::CreateWorkload(), FillLayer::CreateWorkload(), QuantizeLayer::CreateWorkload(), RankLayer::CreateWorkload(), AbsLayer::CreateWorkload(), CastLayer::CreateWorkload(), StridedSliceLayer::CreateWorkload(), StackLayer::CreateWorkload(), DebugLayer::CreateWorkload(), L2NormalizationLayer::CreateWorkload(), SwitchLayer::CreateWorkload(), TileLayer::CreateWorkload(), SliceLayer::CreateWorkload(), BatchMatMulLayer::CreateWorkload(), RsqrtLayer::CreateWorkload(), DequantizeLayer::CreateWorkload(), NormalizationLayer::CreateWorkload(), Pooling2dLayer::CreateWorkload(), ConcatLayer::CreateWorkload(), Pooling3dLayer::CreateWorkload(), FakeQuantizationLayer::CreateWorkload(), ConvertFp16ToFp32Layer::CreateWorkload(), ResizeLayer::CreateWorkload(), FloorLayer::CreateWorkload(), AdditionLayer::CreateWorkload(), BatchToSpaceNdLayer::CreateWorkload(), ShapeLayer::CreateWorkload(), SoftmaxLayer::CreateWorkload(), GatherNdLayer::CreateWorkload(), SplitterLayer::CreateWorkload(), InstanceNormalizationLayer::CreateWorkload(), SpaceToBatchNdLayer::CreateWorkload(), MeanLayer::CreateWorkload(), SpaceToDepthLayer::CreateWorkload(), SubtractionLayer::CreateWorkload(), ArgMinMaxLayer::CreateWorkload(), LogSoftmaxLayer::CreateWorkload(), DepthToSpaceLayer::CreateWorkload(), MaximumLayer::CreateWorkload(), MinimumLayer::CreateWorkload(), ReduceLayer::CreateWorkload(), ReverseV2Layer::CreateWorkload(), GatherLayer::CreateWorkload(), PermuteLayer::CreateWorkload(), DivisionLayer::CreateWorkload(), ElementwiseBinaryLayer::CreateWorkload(), MultiplicationLayer::CreateWorkload(), TransposeLayer::CreateWorkload(), ElementwiseUnaryLayer::CreateWorkload(), LogicalBinaryLayer::CreateWorkload(), ComparisonLayer::CreateWorkload(), PreluLayer::CreateWorkload(), PadLayer::CreateWorkload(), ChannelShuffleLayer::CreateWorkload(), ConstantLayer::CreateWorkload(), ReshapeLayer::CreateWorkload(), Convolution2dLayer::CreateWorkload(), DepthwiseConvolution2dLayer::CreateWorkload(), Convolution3dLayer::CreateWorkload(), FullyConnectedLayer::CreateWorkload(), DetectionPostProcessLayer::CreateWorkload(), TransposeConvolution2dLayer::CreateWorkload(), PreCompiledLayer::CreateWorkload(), UnidirectionalSequenceLstmLayer::CreateWorkload(), LstmLayer::CreateWorkload(), BatchNormalizationLayer::CreateWorkload(), QuantizedLstmLayer::CreateWorkload(), and QLstmLayer::CreateWorkload().

◆ GetBackendId()

virtual const BackendId& GetBackendId ( ) const
pure virtual

◆ IsLayerSupported() [1/4]

bool IsLayerSupported ( const BackendId backendId,
const IConnectableLayer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported 
)
static

Definition at line 1572 of file WorkloadFactory.cpp.

1576 {
1577  return IsLayerConfigurationSupported(backendId, connectableLayer, dataType, outReasonIfUnsupported);
1578 }

Referenced by armnn::AttemptBackendAssignment(), TosaRefWorkloadFactory::IsLayerSupported(), NeonWorkloadFactory::IsLayerSupported(), ClWorkloadFactory::IsLayerSupported(), and RefWorkloadFactory::IsLayerSupported().

◆ IsLayerSupported() [2/4]

bool IsLayerSupported ( const BackendId backendId,
const IConnectableLayer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported,
const ModelOptions modelOptions 
)
static

Definition at line 1601 of file WorkloadFactory.cpp.

1606 {
1607  return IsLayerConfigurationSupported(backendId,
1608  connectableLayer,
1609  dataType,
1610  outReasonIfUnsupported,
1611  modelOptions);
1612 }

◆ IsLayerSupported() [3/4]

bool IsLayerSupported ( const IConnectableLayer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported 
)
static

Definition at line 1580 of file WorkloadFactory.cpp.

1583 {
1584  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1585  return IsLayerConfigurationSupported(layer->GetBackendId(), connectableLayer, dataType, outReasonIfUnsupported);
1586 }

◆ IsLayerSupported() [4/4]

bool IsLayerSupported ( const IConnectableLayer layer,
Optional< DataType dataType,
std::string &  outReasonIfUnsupported,
const ModelOptions modelOptions 
)
static

Definition at line 1588 of file WorkloadFactory.cpp.

1592 {
1593  auto layer = PolymorphicDowncast<const Layer*>(&connectableLayer);
1594  return IsLayerConfigurationSupported(layer->GetBackendId(),
1595  connectableLayer,
1596  dataType,
1597  outReasonIfUnsupported,
1598  modelOptions);
1599 }

◆ SupportsSubTensors()

virtual bool SupportsSubTensors ( ) const
pure virtual

The documentation for this class was generated from the following files: