ArmNN
 21.11
RefWorkloadFactory Class Reference

#include <RefWorkloadFactory.hpp>

Inheritance diagram for RefWorkloadFactory:
IWorkloadFactory

Public Member Functions

 RefWorkloadFactory (const std::shared_ptr< RefMemoryManager > &memoryManager)
 
 RefWorkloadFactory ()
 
 ~RefWorkloadFactory ()
 
const BackendIdGetBackendId () const override
 
bool SupportsSubTensors () const override
 
std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< IWorkloadCreateActivation (const ActivationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateAddition (const AdditionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateArgMinMax (const ArgMinMaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchNormalization (const BatchNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchToSpaceNd (const BatchToSpaceNdQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateCast (const CastQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateChannelShuffle (const ChannelShuffleQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateComparison (const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConcat (const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConstant (const ConstantQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertBf16ToFp32 (const ConvertBf16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp16ToFp32 (const ConvertFp16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp32ToBf16 (const ConvertFp32ToBf16QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp32ToFp16 (const ConvertFp32ToFp16QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution2d (const Convolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution3d (const Convolution3dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDebug (const DebugQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthToSpace (const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDequantize (const DequantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDetectionPostProcess (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDivision (const DivisionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateElementwiseUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFakeQuantization (const FakeQuantizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFill (const FillQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFloor (const FloorQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFullyConnected (const FullyConnectedQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateGather (const GatherQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateInput (const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateInstanceNormalization (const InstanceNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateL2Normalization (const L2NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateLogicalBinary (const LogicalBinaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateLogSoftmax (const LogSoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateLstm (const LstmQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMaximum (const MaximumQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMean (const MeanQueueDescriptor &descriptor, const WorkloadInfo &Info) const override
 
std::unique_ptr< IWorkloadCreateMemCopy (const MemCopyQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMemImport (const MemImportQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMinimum (const MinimumQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMultiplication (const MultiplicationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateNormalization (const NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateOutput (const OutputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePad (const PadQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePermute (const PermuteQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePooling2d (const Pooling2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePreCompiled (const PreCompiledQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePrelu (const PreluQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateQLstm (const QLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateQuantize (const QuantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateRank (const RankQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateReduce (const ReduceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateReshape (const ReshapeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateResize (const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateShape (const ShapeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSlice (const SliceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSoftmax (const SoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSpaceToBatchNd (const SpaceToBatchNdQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSpaceToDepth (const SpaceToDepthQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSplitter (const SplitterQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateStack (const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateStridedSlice (const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSubtraction (const SubtractionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateTranspose (const TransposeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateTransposeConvolution2d (const TransposeConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateUnidirectionalSequenceLstm (const UnidirectionalSequenceLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
- Public Member Functions inherited from IWorkloadFactory
virtual ~IWorkloadFactory ()
 
virtual void AfterWorkloadsCreated ()
 
virtual std::unique_ptr< IWorkloadCreateLogicalUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
 
virtual std::unique_ptr< IWorkloadCreateMerge (const MergeQueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateQuantizedLstm (const QuantizedLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateSwitch (const SwitchQueueDescriptor &descriptor, const WorkloadInfo &Info) const
 

Static Public Member Functions

static bool IsLayerSupported (const Layer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
static bool IsLayerSupported (const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported, const ModelOptions &modelOptions)
 
- Static Public Member Functions inherited from IWorkloadFactory
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 30 of file RefWorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ RefWorkloadFactory() [1/2]

RefWorkloadFactory ( const std::shared_ptr< RefMemoryManager > &  memoryManager)
explicit

Definition at line 83 of file RefWorkloadFactory.cpp.

84  : m_MemoryManager(memoryManager)
85 {
86 }

◆ RefWorkloadFactory() [2/2]

Definition at line 88 of file RefWorkloadFactory.cpp.

89  : m_MemoryManager(new RefMemoryManager())
90 {
91 }

◆ ~RefWorkloadFactory()

Member Function Documentation

◆ CreateActivation()

std::unique_ptr< IWorkload > CreateActivation ( const ActivationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 144 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

146 {
147  return std::make_unique<RefActivationWorkload>(descriptor, info);
148 }

◆ CreateAddition()

std::unique_ptr< IWorkload > CreateAddition ( const AdditionQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 150 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

152 {
153  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
154  {
155  return std::make_unique<RefAdditionWorkload<int32_t>>(descriptor, info);
156  }
157  else
158  {
159  return std::make_unique<RefAdditionWorkload<float>>(descriptor, info);
160  }
161 }

◆ CreateArgMinMax()

std::unique_ptr< IWorkload > CreateArgMinMax ( const ArgMinMaxQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 163 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

165 {
166  return std::make_unique<RefArgMinMaxWorkload>(descriptor, info);
167 }

◆ CreateBatchNormalization()

std::unique_ptr< IWorkload > CreateBatchNormalization ( const BatchNormalizationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 169 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

172 {
173  return std::make_unique<RefBatchNormalizationWorkload>(descriptor, info);
174 }

◆ CreateBatchToSpaceNd()

std::unique_ptr< IWorkload > CreateBatchToSpaceNd ( const BatchToSpaceNdQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 176 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

178 {
179  return std::make_unique<RefBatchToSpaceNdWorkload>(descriptor, info);
180 }

◆ CreateCast()

std::unique_ptr< IWorkload > CreateCast ( const CastQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 182 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

184 {
185  return std::make_unique<RefCastWorkload>(descriptor, info);
186 }

◆ CreateChannelShuffle()

std::unique_ptr< IWorkload > CreateChannelShuffle ( const ChannelShuffleQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 188 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

190 {
191  return std::make_unique<RefChannelShuffleWorkload>(descriptor,info);
192 }

◆ CreateComparison()

std::unique_ptr< IWorkload > CreateComparison ( const ComparisonQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 194 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

196 {
197  return std::make_unique<RefComparisonWorkload>(descriptor, info);
198 }

◆ CreateConcat()

std::unique_ptr< IWorkload > CreateConcat ( const ConcatQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 200 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

202 {
203  return std::make_unique<RefConcatWorkload>(descriptor, info);
204 }

◆ CreateConstant()

std::unique_ptr< IWorkload > CreateConstant ( const ConstantQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 206 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

208 {
209  return std::make_unique<RefConstantWorkload>(descriptor, info);
210 }

◆ CreateConvertBf16ToFp32()

std::unique_ptr< IWorkload > CreateConvertBf16ToFp32 ( const ConvertBf16ToFp32QueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 212 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

215 {
216  return std::make_unique<RefConvertBf16ToFp32Workload>(descriptor, info);
217 }

◆ CreateConvertFp16ToFp32()

std::unique_ptr< IWorkload > CreateConvertFp16ToFp32 ( const ConvertFp16ToFp32QueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 219 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

222 {
223  return std::make_unique<RefConvertFp16ToFp32Workload>(descriptor, info);
224 }

◆ CreateConvertFp32ToBf16()

std::unique_ptr< IWorkload > CreateConvertFp32ToBf16 ( const ConvertFp32ToBf16QueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 226 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

229 {
230  return std::make_unique<RefConvertFp32ToBf16Workload>(descriptor, info);
231 }

◆ CreateConvertFp32ToFp16()

std::unique_ptr< IWorkload > CreateConvertFp32ToFp16 ( const ConvertFp32ToFp16QueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 233 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

236 {
237  return std::make_unique<RefConvertFp32ToFp16Workload>(descriptor, info);
238 }

◆ CreateConvolution2d()

std::unique_ptr< IWorkload > CreateConvolution2d ( const Convolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 240 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

242 {
243  return std::make_unique<RefConvolution2dWorkload>(descriptor, info);
244 }

◆ CreateConvolution3d()

std::unique_ptr< IWorkload > CreateConvolution3d ( const Convolution3dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 246 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

248 {
249  return std::make_unique<RefConvolution3dWorkload>(descriptor, info);
250 }

◆ CreateDebug()

std::unique_ptr< IWorkload > CreateDebug ( const DebugQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 252 of file RefWorkloadFactory.cpp.

References armnn::info, armnn::IsBFloat16(), armnn::IsFloat16(), armnn::IsQAsymmS8(), armnn::IsQAsymmU8(), armnn::IsQSymmS16(), armnn::IsQSymmS8(), and armnn::IsSigned32().

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

254 {
255  if (IsBFloat16(info))
256  {
257  return std::make_unique<RefDebugBFloat16Workload>(descriptor, info);
258  }
259  if (IsFloat16(info))
260  {
261  return std::make_unique<RefDebugFloat16Workload>(descriptor, info);
262  }
263  if (IsQSymmS16(info))
264  {
265  return std::make_unique<RefDebugQSymmS16Workload>(descriptor, info);
266  }
267  if (IsQSymmS8(info))
268  {
269  return std::make_unique<RefDebugQSymmS8Workload>(descriptor, info);
270  }
271  if (IsQAsymmU8(info))
272  {
273  return std::make_unique<RefDebugQAsymmU8Workload>(descriptor, info);
274  }
275  if (IsQAsymmS8(info))
276  {
277  return std::make_unique<RefDebugQAsymmS8Workload>(descriptor, info);
278  }
279  if (IsSigned32(info))
280  {
281  return std::make_unique<RefDebugSigned32Workload>(descriptor, info);
282  }
283 
284  return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(descriptor, info);
285 }
bool IsQAsymmS8(const WorkloadInfo &info)
bool IsQAsymmU8(const WorkloadInfo &info)
bool IsQSymmS8(const WorkloadInfo &info)
bool IsBFloat16(const WorkloadInfo &info)
bool IsFloat16(const WorkloadInfo &info)
bool IsSigned32(const WorkloadInfo &info)
bool IsQSymmS16(const WorkloadInfo &info)

◆ CreateDepthToSpace()

std::unique_ptr< IWorkload > CreateDepthToSpace ( const DepthToSpaceQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 287 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

289 {
290  return std::make_unique<RefDepthToSpaceWorkload>(descriptor, info);
291 }

◆ CreateDepthwiseConvolution2d()

std::unique_ptr< IWorkload > CreateDepthwiseConvolution2d ( const DepthwiseConvolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 293 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

296 {
297  return std::make_unique<RefDepthwiseConvolution2dWorkload>(descriptor, info);
298 }

◆ CreateDequantize()

std::unique_ptr< IWorkload > CreateDequantize ( const DequantizeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 300 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

302 {
303  return std::make_unique<RefDequantizeWorkload>(descriptor, info);
304 }

◆ CreateDetectionPostProcess()

std::unique_ptr< IWorkload > CreateDetectionPostProcess ( const DetectionPostProcessQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 306 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

309 {
310  return std::make_unique<RefDetectionPostProcessWorkload>(descriptor, info);
311 }

◆ CreateDivision()

std::unique_ptr< IWorkload > CreateDivision ( const DivisionQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 313 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

315 {
316  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
317  {
318  return std::make_unique<RefDivisionWorkload<int32_t>>(descriptor, info);
319  }
320  else
321  {
322  return std::make_unique<RefDivisionWorkload<float>>(descriptor, info);
323  }
324 }

◆ CreateElementwiseUnary()

std::unique_ptr< IWorkload > CreateElementwiseUnary ( const ElementwiseUnaryQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 326 of file RefWorkloadFactory.cpp.

References armnn::info, armnn::LogicalNot, ElementwiseUnaryDescriptor::m_Operation, and QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

328 {
329  if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
330  {
331  return std::make_unique<RefLogicalUnaryWorkload>(descriptor, info);
332  }
333  return std::make_unique<RefElementwiseUnaryWorkload>(descriptor, info);
334 }

◆ CreateFakeQuantization()

std::unique_ptr< IWorkload > CreateFakeQuantization ( const FakeQuantizationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 336 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

338 {
339  return MakeWorkload<RefFakeQuantizationFloat32Workload, NullWorkload>(descriptor, info);
340 }

◆ CreateFill()

std::unique_ptr< IWorkload > CreateFill ( const FillQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 342 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

344 {
345  return std::make_unique<RefFillWorkload>(descriptor, info);
346 }

◆ CreateFloor()

std::unique_ptr< IWorkload > CreateFloor ( const FloorQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 348 of file RefWorkloadFactory.cpp.

References armnn::info, armnn::IsQuantizedType(), and WorkloadInfo::m_InputTensorInfos.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

350 {
351  if(IsQuantizedType(info.m_InputTensorInfos[0].GetDataType()))
352  {
353  return nullptr;
354  }
355  else
356  {
357  return std::make_unique<RefFloorWorkload>(descriptor, info);
358  }
359 }
constexpr bool IsQuantizedType()
Definition: TypesUtils.hpp:280

◆ CreateFullyConnected()

std::unique_ptr< IWorkload > CreateFullyConnected ( const FullyConnectedQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 361 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

364 {
365  return std::make_unique<RefFullyConnectedWorkload>(descriptor, info);
366 }

◆ CreateGather()

std::unique_ptr< IWorkload > CreateGather ( const GatherQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 368 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

370 {
371  return std::make_unique<RefGatherWorkload>(descriptor, info);
372 }

◆ CreateInput()

std::unique_ptr< IWorkload > CreateInput ( const InputQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 374 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and WorkloadInfo::m_OutputTensorInfos.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

376 {
377  if (info.m_InputTensorInfos.empty() )
378  {
379  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Input cannot be zero length");
380  }
381  if (info.m_OutputTensorInfos.empty())
382  {
383  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length");
384  }
385 
386  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
387  {
388  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: data input and output differ in byte count.");
389  }
390 
391  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
392 }

◆ CreateInstanceNormalization()

std::unique_ptr< IWorkload > CreateInstanceNormalization ( const InstanceNormalizationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 394 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

397 {
398  return std::make_unique<RefInstanceNormalizationWorkload>(descriptor, info);
399 }

◆ CreateL2Normalization()

std::unique_ptr< IWorkload > CreateL2Normalization ( const L2NormalizationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 401 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

403 {
404  return std::make_unique<RefL2NormalizationWorkload>(descriptor, info);
405 }

◆ CreateLogicalBinary()

std::unique_ptr< IWorkload > CreateLogicalBinary ( const LogicalBinaryQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 407 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

409 {
410  return std::make_unique<RefLogicalBinaryWorkload>(descriptor, info);
411 }

◆ CreateLogSoftmax()

std::unique_ptr< IWorkload > CreateLogSoftmax ( const LogSoftmaxQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 413 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

415 {
416  return std::make_unique<RefLogSoftmaxWorkload>(descriptor, info);
417 }

◆ CreateLstm()

std::unique_ptr< IWorkload > CreateLstm ( const LstmQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 419 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

421 {
422  return std::make_unique<RefLstmWorkload>(descriptor, info);
423 }

◆ CreateMaximum()

std::unique_ptr< IWorkload > CreateMaximum ( const MaximumQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 425 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

427 {
428  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
429  {
430  return std::make_unique<RefMaximumWorkload<int32_t>>(descriptor, info);
431  }
432  else
433  {
434  return std::make_unique<RefMaximumWorkload<float>>(descriptor, info);
435  }
436 }

◆ CreateMean()

std::unique_ptr< IWorkload > CreateMean ( const MeanQueueDescriptor descriptor,
const WorkloadInfo Info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 438 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

440 {
441  return std::make_unique<RefMeanWorkload>(descriptor, info);
442 }

◆ CreateMemCopy()

std::unique_ptr< IWorkload > CreateMemCopy ( const MemCopyQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 444 of file RefWorkloadFactory.cpp.

References armnn::info, and QueueDescriptor::m_Inputs.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

446 {
447  if (descriptor.m_Inputs.empty())
448  {
449  throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor.");
450  }
451  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
452 }

◆ CreateMemImport()

std::unique_ptr< IWorkload > CreateMemImport ( const MemImportQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 454 of file RefWorkloadFactory.cpp.

References armnn::info, and QueueDescriptor::m_Inputs.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

456 {
457  if (descriptor.m_Inputs.empty())
458  {
459  throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor.");
460  }
461  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
462 }

◆ CreateMinimum()

std::unique_ptr< IWorkload > CreateMinimum ( const MinimumQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 464 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

466 {
467  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
468  {
469  return std::make_unique<RefMinimumWorkload<int32_t>>(descriptor, info);
470  }
471  else
472  {
473  return std::make_unique<RefMinimumWorkload<float>>(descriptor, info);
474  }
475 }

◆ CreateMultiplication()

std::unique_ptr< IWorkload > CreateMultiplication ( const MultiplicationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 477 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

479 {
480  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
481  {
482  return std::make_unique<RefMultiplicationWorkload<int32_t>>(descriptor, info);
483  }
484  else
485  {
486  return std::make_unique<RefMultiplicationWorkload<float>>(descriptor, info);
487  }
488 }

◆ CreateNormalization()

std::unique_ptr< IWorkload > CreateNormalization ( const NormalizationQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 490 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

492 {
493  return std::make_unique<RefNormalizationWorkload>(descriptor, info);
494 }

◆ CreateOutput()

std::unique_ptr< IWorkload > CreateOutput ( const OutputQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 496 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and WorkloadInfo::m_OutputTensorInfos.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

498 {
499  if (info.m_InputTensorInfos.empty() )
500  {
501  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Input cannot be zero length");
502  }
503  if (info.m_OutputTensorInfos.empty())
504  {
505  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Output cannot be zero length");
506  }
507  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
508  {
509  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output differ in byte count.");
510  }
511 
512  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
513 }

◆ CreatePad()

std::unique_ptr< IWorkload > CreatePad ( const PadQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 515 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

517 {
518  return std::make_unique<RefPadWorkload>(descriptor, info);
519 }

◆ CreatePermute()

std::unique_ptr< IWorkload > CreatePermute ( const PermuteQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 521 of file RefWorkloadFactory.cpp.

References armnn::info, armnn::IsBFloat16(), armnn::IsQAsymmS8(), and armnn::IsQSymmS16().

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

523 {
524  if (IsQSymmS16(info))
525  {
526  return std::make_unique<RefPermuteQSymm16Workload>(descriptor, info);
527  }
528  else if (IsBFloat16(info))
529  {
530  return std::make_unique<RefPermuteBFloat16Workload>(descriptor, info);
531  }
532  else if (IsQAsymmS8(info))
533  {
534  return std::make_unique<RefPermuteQAsymmS8Workload>(descriptor, info);
535  }
537  NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
538 }
RefPermuteWorkload< DataType::Float16 > RefPermuteFloat16Workload
bool IsQAsymmS8(const WorkloadInfo &info)
RefPermuteWorkload< DataType::Float32 > RefPermuteFloat32Workload
bool IsBFloat16(const WorkloadInfo &info)
RefPermuteWorkload< DataType::QAsymmU8 > RefPermuteQAsymm8Workload
bool IsQSymmS16(const WorkloadInfo &info)

◆ CreatePooling2d()

std::unique_ptr< IWorkload > CreatePooling2d ( const Pooling2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 540 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

542 {
543  return std::make_unique<RefPooling2dWorkload>(descriptor, info);
544 }

◆ CreatePreCompiled()

std::unique_ptr< IWorkload > CreatePreCompiled ( const PreCompiledQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 546 of file RefWorkloadFactory.cpp.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

548 {
549  return nullptr;
550 }

◆ CreatePrelu()

std::unique_ptr< IWorkload > CreatePrelu ( const PreluQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 552 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

554 {
555  return std::make_unique<RefPreluWorkload>(descriptor, info);
556 }

◆ CreateQLstm()

std::unique_ptr< IWorkload > CreateQLstm ( const QLstmQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 558 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

560 {
561  return std::make_unique<RefQLstmWorkload>(descriptor, info);
562 }

◆ CreateQuantize()

std::unique_ptr< IWorkload > CreateQuantize ( const QuantizeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 564 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

566 {
567  return std::make_unique<RefQuantizeWorkload>(descriptor, info);
568 }

◆ CreateRank()

std::unique_ptr< IWorkload > CreateRank ( const RankQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 570 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

572 {
573  return std::make_unique<RefRankWorkload>(descriptor, info);
574 }

◆ CreateReduce()

std::unique_ptr< IWorkload > CreateReduce ( const ReduceQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 576 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

578 {
579  return std::make_unique<RefReduceWorkload>(descriptor, info);
580 }

◆ CreateReshape()

std::unique_ptr< IWorkload > CreateReshape ( const ReshapeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 582 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

584 {
585  return std::make_unique<RefReshapeWorkload>(descriptor, info);
586 }

◆ CreateResize()

std::unique_ptr< IWorkload > CreateResize ( const ResizeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 588 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

590 {
591  return std::make_unique<RefResizeWorkload>(descriptor, info);
592 }

◆ CreateShape()

std::unique_ptr< IWorkload > CreateShape ( const ShapeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 594 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

596 {
597  return std::make_unique<RefShapeWorkload>(descriptor, info);
598 }

◆ CreateSlice()

std::unique_ptr< IWorkload > CreateSlice ( const SliceQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 600 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

602 {
603  return std::make_unique<RefSliceWorkload>(descriptor, info);
604 }

◆ CreateSoftmax()

std::unique_ptr< IWorkload > CreateSoftmax ( const SoftmaxQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 606 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

608 {
609  return std::make_unique<RefSoftmaxWorkload>(descriptor, info);
610 }

◆ CreateSpaceToBatchNd()

std::unique_ptr< IWorkload > CreateSpaceToBatchNd ( const SpaceToBatchNdQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 612 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

614 {
615  return std::make_unique<RefSpaceToBatchNdWorkload>(descriptor, info);
616 }

◆ CreateSpaceToDepth()

std::unique_ptr< IWorkload > CreateSpaceToDepth ( const SpaceToDepthQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 618 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

620 {
621  return std::make_unique<RefSpaceToDepthWorkload>(descriptor, info);
622 }

◆ CreateSplitter()

std::unique_ptr< IWorkload > CreateSplitter ( const SplitterQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 624 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

626 {
627  return std::make_unique<RefSplitterWorkload>(descriptor, info);
628 }

◆ CreateStack()

std::unique_ptr< IWorkload > CreateStack ( const StackQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 630 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

632 {
633  return std::make_unique<RefStackWorkload>(descriptor, info);
634 }

◆ CreateStridedSlice()

std::unique_ptr< IWorkload > CreateStridedSlice ( const StridedSliceQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 636 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

638 {
639  return std::make_unique<RefStridedSliceWorkload>(descriptor, info);
640 }

◆ CreateSubTensorHandle()

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

Implements IWorkloadFactory.

Definition at line 52 of file RefWorkloadFactory.hpp.

References ARMNN_DEPRECATED_MSG, RefWorkloadFactory::CreateActivation(), RefWorkloadFactory::CreateAddition(), RefWorkloadFactory::CreateArgMinMax(), RefWorkloadFactory::CreateBatchNormalization(), RefWorkloadFactory::CreateBatchToSpaceNd(), RefWorkloadFactory::CreateCast(), RefWorkloadFactory::CreateChannelShuffle(), RefWorkloadFactory::CreateComparison(), RefWorkloadFactory::CreateConcat(), RefWorkloadFactory::CreateConstant(), RefWorkloadFactory::CreateConvertBf16ToFp32(), RefWorkloadFactory::CreateConvertFp16ToFp32(), RefWorkloadFactory::CreateConvertFp32ToBf16(), RefWorkloadFactory::CreateConvertFp32ToFp16(), RefWorkloadFactory::CreateConvolution2d(), RefWorkloadFactory::CreateConvolution3d(), RefWorkloadFactory::CreateDebug(), RefWorkloadFactory::CreateDepthToSpace(), RefWorkloadFactory::CreateDepthwiseConvolution2d(), RefWorkloadFactory::CreateDequantize(), RefWorkloadFactory::CreateDetectionPostProcess(), RefWorkloadFactory::CreateDivision(), RefWorkloadFactory::CreateElementwiseUnary(), RefWorkloadFactory::CreateFakeQuantization(), RefWorkloadFactory::CreateFill(), RefWorkloadFactory::CreateFloor(), RefWorkloadFactory::CreateFullyConnected(), RefWorkloadFactory::CreateGather(), RefWorkloadFactory::CreateInput(), RefWorkloadFactory::CreateInstanceNormalization(), RefWorkloadFactory::CreateL2Normalization(), RefWorkloadFactory::CreateLogicalBinary(), RefWorkloadFactory::CreateLogSoftmax(), RefWorkloadFactory::CreateLstm(), RefWorkloadFactory::CreateMaximum(), RefWorkloadFactory::CreateMean(), RefWorkloadFactory::CreateMemCopy(), RefWorkloadFactory::CreateMemImport(), RefWorkloadFactory::CreateMinimum(), RefWorkloadFactory::CreateMultiplication(), RefWorkloadFactory::CreateNormalization(), RefWorkloadFactory::CreateOutput(), RefWorkloadFactory::CreatePad(), RefWorkloadFactory::CreatePermute(), RefWorkloadFactory::CreatePooling2d(), RefWorkloadFactory::CreatePreCompiled(), RefWorkloadFactory::CreatePrelu(), RefWorkloadFactory::CreateQLstm(), RefWorkloadFactory::CreateQuantize(), RefWorkloadFactory::CreateRank(), RefWorkloadFactory::CreateReduce(), RefWorkloadFactory::CreateReshape(), RefWorkloadFactory::CreateResize(), RefWorkloadFactory::CreateShape(), RefWorkloadFactory::CreateSlice(), RefWorkloadFactory::CreateSoftmax(), RefWorkloadFactory::CreateSpaceToBatchNd(), RefWorkloadFactory::CreateSpaceToDepth(), RefWorkloadFactory::CreateSplitter(), RefWorkloadFactory::CreateStack(), RefWorkloadFactory::CreateStridedSlice(), RefWorkloadFactory::CreateSubtraction(), RefWorkloadFactory::CreateTensorHandle(), RefWorkloadFactory::CreateTranspose(), RefWorkloadFactory::CreateTransposeConvolution2d(), RefWorkloadFactory::CreateUnidirectionalSequenceLstm(), armnn::IgnoreUnused(), armnn::Info, and armnn::info.

55  {
56  IgnoreUnused(parent, subTensorShape, subTensorOrigin);
57  return nullptr;
58  }
void IgnoreUnused(Ts &&...)

◆ CreateSubtraction()

std::unique_ptr< IWorkload > CreateSubtraction ( const SubtractionQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 642 of file RefWorkloadFactory.cpp.

References armnn::info, WorkloadInfo::m_InputTensorInfos, and armnn::Signed32.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

644 {
645  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
646  {
647  return std::make_unique<RefSubtractionWorkload<int32_t>>(descriptor, info);
648  }
649  else
650  {
651  return std::make_unique<RefSubtractionWorkload<float>>(descriptor, info);
652  }
653 }

◆ CreateTensorHandle() [1/2]

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

Implements IWorkloadFactory.

Definition at line 113 of file RefWorkloadFactory.cpp.

References armnn::Malloc.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

115 {
116  if (isMemoryManaged)
117  {
118  return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
119  }
120  else
121  {
122  return std::make_unique<RefTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc));
123  }
124 }

◆ CreateTensorHandle() [2/2]

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

Implements IWorkloadFactory.

Definition at line 126 of file RefWorkloadFactory.cpp.

References armnn::IgnoreUnused(), and armnn::Malloc.

129 {
130  // For Ref it is okay to make the TensorHandle memory managed as it can also store a pointer
131  // to unmanaged memory. This also ensures memory alignment.
132  IgnoreUnused(isMemoryManaged, dataLayout);
133 
134  if (isMemoryManaged)
135  {
136  return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
137  }
138  else
139  {
140  return std::make_unique<RefTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc));
141  }
142 }
void IgnoreUnused(Ts &&...)

◆ CreateTranspose()

std::unique_ptr< IWorkload > CreateTranspose ( const TransposeQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 655 of file RefWorkloadFactory.cpp.

References armnn::info, armnn::IsBFloat16(), armnn::IsQAsymmS8(), and armnn::IsQSymmS16().

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

657 {
658  if (IsQSymmS16(info))
659  {
660  return std::make_unique<RefTransposeQSymm16Workload>(descriptor, info);
661  }
662  else if (IsBFloat16(info))
663  {
664  return std::make_unique<RefTransposeBFloat16Workload>(descriptor, info);
665  }
666  else if (IsQAsymmS8(info))
667  {
668  return std::make_unique<RefTransposeQAsymmS8Workload>(descriptor, info);
669  }
671  NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
672 }
RefTransposeWorkload< DataType::Float16 > RefTransposeFloat16Workload
bool IsQAsymmS8(const WorkloadInfo &info)
bool IsBFloat16(const WorkloadInfo &info)
RefTransposeWorkload< DataType::Float32 > RefTransposeFloat32Workload
RefTransposeWorkload< DataType::QAsymmU8 > RefTransposeQAsymm8Workload
bool IsQSymmS16(const WorkloadInfo &info)

◆ CreateTransposeConvolution2d()

std::unique_ptr< IWorkload > CreateTransposeConvolution2d ( const TransposeConvolution2dQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 674 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

677 {
678  return std::make_unique<RefTransposeConvolution2dWorkload>(descriptor, info);
679 }

◆ CreateUnidirectionalSequenceLstm()

std::unique_ptr< IWorkload > CreateUnidirectionalSequenceLstm ( const UnidirectionalSequenceLstmQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 681 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

684 {
685  return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(descriptor, info);;
686 }

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 93 of file RefWorkloadFactory.cpp.

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

94 {
95  return s_Id;
96 }

◆ IsLayerSupported() [1/2]

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

Definition at line 98 of file RefWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

101 {
102  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
103 }
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)

◆ IsLayerSupported() [2/2]

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

Definition at line 105 of file RefWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

109 {
110  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported, modelOptions);
111 }
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)

◆ SupportsSubTensors()

bool SupportsSubTensors ( ) const
inlineoverridevirtual

Implements IWorkloadFactory.

Definition at line 49 of file RefWorkloadFactory.hpp.

References ARMNN_DEPRECATED_MSG.

49 { return false; }

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