ArmNN
 21.08
ClWorkloadFactory Class Reference

#include <ClWorkloadFactory.hpp>

Inheritance diagram for ClWorkloadFactory:
WorkloadFactoryBase IWorkloadFactory

Public Member Functions

 ClWorkloadFactory (const std::shared_ptr< ClMemoryManager > &memoryManager)
 
 ClWorkloadFactory (const std::shared_ptr< ClMemoryManager > &memoryManager, const IBackendInternal::IBackendSpecificModelContextPtr &modelContextPtr)
 
void AfterWorkloadsCreated () override
 
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< IWorkloadCreateAbs (const AbsQueueDescriptor &descriptor, const WorkloadInfo &info) 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< 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< IWorkloadCreateConvertFp16ToFp32 (const ConvertFp16ToFp32QueueDescriptor &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< 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< IWorkloadCreateEqual (const EqualQueueDescriptor &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< IWorkloadCreateGreater (const GreaterQueueDescriptor &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< IWorkloadCreateMerger (const MergerQueueDescriptor &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< IWorkloadCreateQuantizedLstm (const QuantizedLstmQueueDescriptor &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< IWorkloadCreateResizeBilinear (const ResizeBilinearQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateRsqrt (const RsqrtQueueDescriptor &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
 
- Public Member Functions inherited from WorkloadFactoryBase
std::unique_ptr< IWorkloadCreateFakeQuantization (const FakeQuantizationQueueDescriptor &, const WorkloadInfo &) const override
 
std::unique_ptr< IWorkloadCreateMerge (const MergeQueueDescriptor &, const WorkloadInfo &) const override
 
std::unique_ptr< IWorkloadCreateSwitch (const SwitchQueueDescriptor &, const WorkloadInfo &) const override
 
- Public Member Functions inherited from IWorkloadFactory
virtual ~IWorkloadFactory ()
 
virtual std::unique_ptr< IWorkloadCreateConvertBf16ToFp32 (const ConvertBf16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateConvertFp32ToBf16 (const ConvertFp32ToBf16QueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateLogicalUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
 
virtual std::unique_ptr< IWorkloadCreateShape (const ShapeQueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateUnidirectionalSequenceLstm (const UnidirectionalSequenceLstmQueueDescriptor &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 21 of file ClWorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ ClWorkloadFactory() [1/2]

ClWorkloadFactory ( const std::shared_ptr< ClMemoryManager > &  memoryManager)

Definition at line 138 of file ClWorkloadFactory.cpp.

139  : m_MemoryManager(memoryManager), m_ModelContextPtr(IBackendInternal::IBackendSpecificModelContextPtr{})
140 {
141  InitializeCLCompileContext();
142 }
std::shared_ptr< IBackendModelContext > IBackendSpecificModelContextPtr

◆ ClWorkloadFactory() [2/2]

ClWorkloadFactory ( const std::shared_ptr< ClMemoryManager > &  memoryManager,
const IBackendInternal::IBackendSpecificModelContextPtr modelContextPtr 
)

Definition at line 144 of file ClWorkloadFactory.cpp.

146  : m_MemoryManager(memoryManager), m_ModelContextPtr(modelContextPtr)
147 {
148  InitializeCLCompileContext();
149 }

Member Function Documentation

◆ AfterWorkloadsCreated()

void AfterWorkloadsCreated ( )
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 63 of file ClWorkloadFactory.cpp.

References CHECK_LOCATION, ClContextDeserializer::Deserialize(), armnn::Error, ClBackendModelContext::GetCachedNetworkFilePath(), armnn::info, ClContextSerializer::SaveSerializedToStream(), ClContextSerializer::Serialize(), and armnn::WrapClError().

64 {
65  if(m_ModelContextPtr)
66  {
67  auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
68  if (modelOptions->SaveCachedNetwork())
69  {
70  // Save map to a filepath provided in ModelOptions
71  auto filePath = modelOptions->GetCachedNetworkFilePath();
72  if (filePath != "" && fs::exists(filePath) && fs::is_regular_file(filePath))
73  {
74  // Serialize ClContext to the file specified
75  ClContextSerializer serializer;
76  serializer.Serialize(m_CLCompileContext);
77  std::ofstream file(filePath, std::ios::out | std::ios::binary);
78  serializer.SaveSerializedToStream(file);
79  }
80  }
81  }
82 }

◆ CreateAbs()

std::unique_ptr< IWorkload > CreateAbs ( const AbsQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from WorkloadFactoryBase.

Definition at line 197 of file ClWorkloadFactory.cpp.

References armnn::Abs, ClWorkloadFactory::CreateElementwiseUnary(), armnn::IgnoreUnused(), and QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters.

Referenced by ClWorkloadFactory::SupportsSubTensors().

199 {
200  IgnoreUnused(descriptor);
201 
202  ElementwiseUnaryQueueDescriptor elementwiseUnaryDescriptor;
203  elementwiseUnaryDescriptor.m_Parameters = ElementwiseUnaryDescriptor(UnaryOperation::Abs);
204 
205  return CreateElementwiseUnary(elementwiseUnaryDescriptor, info);
206 }
void IgnoreUnused(Ts &&...)
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateActivation()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 208 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

210 {
211  return MakeWorkload<ClActivationWorkload>(descriptor, info, m_CLCompileContext);
212 }

◆ CreateAddition()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 214 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

216 {
217  return MakeWorkload<ClAdditionWorkload>(descriptor, info, m_CLCompileContext);
218 }

◆ CreateArgMinMax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 220 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

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

◆ CreateBatchNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 226 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

229 {
230  return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
231 }

◆ CreateBatchToSpaceNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 233 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

235 {
236  return MakeWorkload<ClBatchToSpaceNdWorkload>(descriptor, info, m_CLCompileContext);
237 }

◆ CreateCast()

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

Reimplemented from IWorkloadFactory.

Definition at line 239 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

241 {
242  return MakeWorkload<ClCastWorkload>(descriptor, info, m_CLCompileContext);
243 }

◆ CreateComparison()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 245 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::CreateEqual(), ClWorkloadFactory::CreateGreater(), and ClWorkloadFactory::SupportsSubTensors().

247 {
248  return MakeWorkload<ClComparisonWorkload>(descriptor, info, m_CLCompileContext);
249 }

◆ CreateConcat()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 251 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::CreateMerger(), and ClWorkloadFactory::SupportsSubTensors().

253 {
254  return MakeWorkload<ClConcatWorkload>(descriptor, info, m_CLCompileContext);
255 }

◆ CreateConstant()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 257 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

259 {
260  return MakeWorkload<ClConstantWorkload>(descriptor, info, m_CLCompileContext);
261 }

◆ CreateConvertFp16ToFp32()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 263 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

266 {
267  return MakeWorkload<ClConvertFp16ToFp32Workload>(descriptor, info, m_CLCompileContext);
268 }

◆ CreateConvertFp32ToFp16()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 270 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

273 {
274  return MakeWorkload<ClConvertFp32ToFp16Workload>(descriptor, info, m_CLCompileContext);
275 }

◆ CreateConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 277 of file ClWorkloadFactory.cpp.

References armnn::info, and ClBackendModelContext::IsFastMathEnabled().

Referenced by ClWorkloadFactory::SupportsSubTensors().

279 {
280  bool isFastMathEnabled = false;
281  if (m_ModelContextPtr)
282  {
283  if (m_ModelContextPtr.get() != nullptr)
284  {
285  auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
286  if (modelOptions)
287  {
288  isFastMathEnabled = modelOptions->IsFastMathEnabled();
289  }
290  }
291  }
292  return MakeWorkload<ClConvolution2dWorkload>(descriptor,
293  info,
294  m_MemoryManager->GetIntraLayerManager(),
295  m_CLCompileContext,
296  isFastMathEnabled);
297 }

◆ CreateDebug()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 299 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

301 {
302  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
303 }

◆ CreateDepthToSpace()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 305 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

307 {
308  return MakeWorkload<ClDepthToSpaceWorkload>(descriptor, info, m_CLCompileContext);
309 }

◆ CreateDepthwiseConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 311 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

314 {
315  return MakeWorkload<ClDepthwiseConvolutionWorkload>(descriptor, info, m_CLCompileContext);
316 }

◆ CreateDequantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 318 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

320 {
321  return MakeWorkload<ClDequantizeWorkload>(descriptor, info, m_CLCompileContext);
322 }

◆ CreateDetectionPostProcess()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 324 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

327 {
328  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
329 }

◆ CreateDivision()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 331 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

333 {
334  return std::make_unique<ClDivisionWorkload>(descriptor, info, m_CLCompileContext);
335 }

◆ CreateElementwiseUnary()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 337 of file ClWorkloadFactory.cpp.

References armnn::Abs, armnn::Exp, armnn::info, armnn::Log, armnn::LogicalNot, QueueDescriptor::m_Inputs, ElementwiseUnaryDescriptor::m_Operation, QueueDescriptor::m_Outputs, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, armnn::Neg, armnn::Rsqrt, and armnn::Sin.

Referenced by ClWorkloadFactory::CreateAbs(), ClWorkloadFactory::CreateRsqrt(), and ClWorkloadFactory::SupportsSubTensors().

339 {
340  switch(descriptor.m_Parameters.m_Operation)
341  {
342  case UnaryOperation::Abs:
343  {
344  AbsQueueDescriptor absQueueDescriptor;
345  absQueueDescriptor.m_Inputs = descriptor.m_Inputs;
346  absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
347 
348  return std::make_unique<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext);
349  }
350  case UnaryOperation::Exp:
351  return std::make_unique<ClExpWorkload>(descriptor, info, m_CLCompileContext);
352  case UnaryOperation::Log:
353  return std::make_unique<ClLogWorkload>(descriptor, info, m_CLCompileContext);
355  return std::make_unique<ClLogicalNotWorkload>(descriptor, info, m_CLCompileContext);
356  case UnaryOperation::Neg:
357  return std::make_unique<ClNegWorkload>(descriptor, info, m_CLCompileContext);
359  {
360  RsqrtQueueDescriptor rsqrtQueueDescriptor;
361  rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs;
362  rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
363 
364  return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext);
365  }
366  case UnaryOperation::Sin:
367  return std::make_unique<ClSinWorkload>(descriptor, info, m_CLCompileContext);
368  default:
369  return nullptr;
370  }
371 }

◆ CreateEqual()

std::unique_ptr< IWorkload > CreateEqual ( const EqualQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 373 of file ClWorkloadFactory.cpp.

References ClWorkloadFactory::CreateComparison(), armnn::Equal, armnn::IgnoreUnused(), and QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters.

Referenced by ClWorkloadFactory::SupportsSubTensors().

375 {
376  IgnoreUnused(descriptor);
377 
378  ComparisonQueueDescriptor comparisonDescriptor;
379  comparisonDescriptor.m_Parameters = ComparisonDescriptor(ComparisonOperation::Equal);
380 
381  return CreateComparison(comparisonDescriptor, info);
382 }
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateFill()

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

Reimplemented from IWorkloadFactory.

Definition at line 384 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

386 {
387  return std::make_unique<ClFillWorkload>(descriptor, info, m_CLCompileContext);
388 }

◆ CreateFloor()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 390 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

392 {
393  return MakeWorkload<ClFloorFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
394 }

◆ CreateFullyConnected()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 396 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

398 {
399  return MakeWorkload<ClFullyConnectedWorkload>(descriptor,
400  info,
401  m_MemoryManager->GetIntraLayerManager(),
402  m_CLCompileContext);
403 }

◆ CreateGather()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 405 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

407 {
408  return MakeWorkload<ClGatherWorkload>(descriptor, info, m_CLCompileContext);
409 }

◆ CreateGreater()

std::unique_ptr< IWorkload > CreateGreater ( const GreaterQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 411 of file ClWorkloadFactory.cpp.

References ClWorkloadFactory::CreateComparison(), armnn::Greater, armnn::IgnoreUnused(), and QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters.

Referenced by ClWorkloadFactory::SupportsSubTensors().

413 {
414  IgnoreUnused(descriptor);
415 
416  ComparisonQueueDescriptor comparisonDescriptor;
417  comparisonDescriptor.m_Parameters = ComparisonDescriptor(ComparisonOperation::Greater);
418 
419  return CreateComparison(comparisonDescriptor, info);
420 }
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateInput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 422 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

424 {
425  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
426 }

◆ CreateInstanceNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 428 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

431 {
432  return MakeWorkload<ClInstanceNormalizationWorkload>(descriptor, info, m_CLCompileContext);
433 }

◆ CreateL2Normalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 435 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

437 {
438  return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
439 }

◆ CreateLogicalBinary()

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

Reimplemented from IWorkloadFactory.

Definition at line 441 of file ClWorkloadFactory.cpp.

References armnn::info, armnn::LogicalAnd, armnn::LogicalOr, LogicalBinaryDescriptor::m_Operation, and QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters.

Referenced by ClWorkloadFactory::SupportsSubTensors().

443 {
444  switch(descriptor.m_Parameters.m_Operation)
445  {
447  return std::make_unique<ClLogicalAndWorkload>(descriptor, info, m_CLCompileContext);
449  return std::make_unique<ClLogicalOrWorkload>(descriptor, info, m_CLCompileContext);
450  default:
451  return nullptr;
452  }
453 }

◆ CreateLogSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 455 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

457 {
458  return MakeWorkload<ClLogSoftmaxWorkload>(descriptor,
459  info,
460  m_MemoryManager->GetIntraLayerManager(),
461  m_CLCompileContext);
462 }

◆ CreateLstm()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 464 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

466 {
467  return MakeWorkload<ClLstmFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
468 }

◆ CreateMaximum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 470 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

472 {
473  return MakeWorkload<ClMaximumWorkload>(descriptor, info, m_CLCompileContext);
474 }

◆ CreateMean()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 476 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

478 {
479  return MakeWorkload<ClMeanWorkload>(descriptor, info, m_CLCompileContext);
480 }

◆ CreateMemCopy()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 482 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

484 {
485  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
486  {
487  throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemCopy workload");
488  }
489 
490  return MakeWorkload<CopyMemGenericWorkload>(descriptor, info);
491 }

◆ CreateMemImport()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 493 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

495 {
496  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
497  {
498  throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemImport workload");
499  }
500 
501  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
502 }

◆ CreateMerger()

std::unique_ptr< IWorkload > CreateMerger ( const MergerQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 504 of file ClWorkloadFactory.cpp.

References ClWorkloadFactory::CreateConcat().

Referenced by ClWorkloadFactory::SupportsSubTensors().

506 {
507  return CreateConcat(descriptor, info);
508 }
std::unique_ptr< IWorkload > CreateConcat(const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateMinimum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 510 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

512 {
513  return MakeWorkload<ClMinimumWorkload>(descriptor, info, m_CLCompileContext);
514 }

◆ CreateMultiplication()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 516 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

518 {
519  return MakeWorkload<ClMultiplicationWorkload>(descriptor, info, m_CLCompileContext);
520 }

◆ CreateNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 522 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

524 {
525  return MakeWorkload<ClNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
526 }

◆ CreateOutput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 528 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

530 {
531  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
532 }

◆ CreatePad()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 534 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

536 {
537  return MakeWorkload<ClPadWorkload>(descriptor, info, m_CLCompileContext);
538 }

◆ CreatePermute()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 540 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

542 {
543  return MakeWorkload<ClPermuteWorkload>(descriptor, info, m_CLCompileContext);
544 }

◆ CreatePooling2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 546 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

548 {
549  return MakeWorkload<ClPooling2dWorkload>(descriptor, info, m_CLCompileContext);
550 }

◆ CreatePreCompiled()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 552 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

554 {
555  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
556 }

◆ CreatePrelu()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 558 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

560 {
561  return MakeWorkload<ClPreluWorkload>(descriptor, info, m_CLCompileContext);
562 }

◆ CreateQLstm()

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

Reimplemented from IWorkloadFactory.

Definition at line 564 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

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

◆ CreateQuantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 570 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

572 {
573  return MakeWorkload<ClQuantizeWorkload>(descriptor, info, m_CLCompileContext);
574 }

◆ CreateQuantizedLstm()

std::unique_ptr< IWorkload > CreateQuantizedLstm ( const QuantizedLstmQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from WorkloadFactoryBase.

Definition at line 576 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

578 {
579  return MakeWorkload<ClQuantizedLstmWorkload>(descriptor, info, m_CLCompileContext);
580 }

◆ CreateRank()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 582 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

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

◆ CreateReduce()

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

Reimplemented from IWorkloadFactory.

Definition at line 588 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

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

◆ CreateReshape()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 594 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

596 {
597  return MakeWorkload<ClReshapeWorkload>(descriptor, info, m_CLCompileContext);
598 }

◆ CreateResize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 600 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::CreateResizeBilinear(), and ClWorkloadFactory::SupportsSubTensors().

602 {
603  return MakeWorkload<ClResizeWorkload>(descriptor, info, m_CLCompileContext);
604 }

◆ CreateResizeBilinear()

std::unique_ptr< IWorkload > CreateResizeBilinear ( const ResizeBilinearQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 606 of file ClWorkloadFactory.cpp.

References armnn::Bilinear, ClWorkloadFactory::CreateResize(), ResizeBilinearDescriptor::m_DataLayout, ResizeDescriptor::m_DataLayout, QueueDescriptor::m_Inputs, ResizeDescriptor::m_Method, QueueDescriptor::m_Outputs, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, ResizeBilinearDescriptor::m_TargetHeight, ResizeDescriptor::m_TargetHeight, ResizeBilinearDescriptor::m_TargetWidth, and ResizeDescriptor::m_TargetWidth.

Referenced by ClWorkloadFactory::SupportsSubTensors().

608 {
609  ResizeQueueDescriptor resizeDescriptor;
610  resizeDescriptor.m_Inputs = descriptor.m_Inputs;
611  resizeDescriptor.m_Outputs = descriptor.m_Outputs;
612 
613  resizeDescriptor.m_Parameters.m_Method = ResizeMethod::Bilinear;
614  resizeDescriptor.m_Parameters.m_DataLayout = descriptor.m_Parameters.m_DataLayout;
615  resizeDescriptor.m_Parameters.m_TargetHeight = descriptor.m_Parameters.m_TargetHeight;
616  resizeDescriptor.m_Parameters.m_TargetWidth = descriptor.m_Parameters.m_TargetWidth;
617 
618  return CreateResize(resizeDescriptor, info);
619 }
std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateRsqrt()

std::unique_ptr< IWorkload > CreateRsqrt ( const RsqrtQueueDescriptor descriptor,
const WorkloadInfo info 
) const
overridevirtual

Reimplemented from WorkloadFactoryBase.

Definition at line 621 of file ClWorkloadFactory.cpp.

References ClWorkloadFactory::CreateElementwiseUnary(), armnn::IgnoreUnused(), QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::Rsqrt.

Referenced by ClWorkloadFactory::SupportsSubTensors().

623 {
624  IgnoreUnused(descriptor);
625 
626  ElementwiseUnaryQueueDescriptor elementwiseUnaryDescriptor;
627  elementwiseUnaryDescriptor.m_Parameters = ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt);
628 
629  return CreateElementwiseUnary(elementwiseUnaryDescriptor, info);
630 }
void IgnoreUnused(Ts &&...)
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 632 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

634 {
635  return MakeWorkload<ClSliceWorkload>(descriptor, info, m_CLCompileContext);
636 }

◆ CreateSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 638 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

640 {
641  return std::make_unique<ClSoftmaxWorkload>(descriptor,
642  info,
643  m_MemoryManager->GetIntraLayerManager(),
644  m_CLCompileContext);
645 }

◆ CreateSpaceToBatchNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 647 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

649 {
650  return MakeWorkload<ClSpaceToBatchNdWorkload>(descriptor, info, m_CLCompileContext);
651 }

◆ CreateSpaceToDepth()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 653 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

655 {
656  return MakeWorkload<ClSpaceToDepthWorkload>(descriptor, info, m_CLCompileContext);
657 }

◆ CreateSplitter()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 659 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

661 {
662  return MakeWorkload<ClSplitterWorkload>(descriptor, info, m_CLCompileContext);
663 }

◆ CreateStack()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 665 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

667 {
668  return MakeWorkload<ClStackWorkload>(descriptor, info, m_CLCompileContext);
669 }

◆ CreateStridedSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 671 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

673 {
674  return MakeWorkload<ClStridedSliceWorkload>(descriptor, info, m_CLCompileContext);
675 }

◆ CreateSubTensorHandle()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 172 of file ClWorkloadFactory.cpp.

Referenced by ClWorkloadFactory::SupportsSubTensors().

175 {
177  arm_compute::TensorShape shape = armcomputetensorutils::BuildArmComputeTensorShape(subTensorShape);
178 
179  coords.set_num_dimensions(subTensorShape.GetNumDimensions());
180  for (unsigned int i = 0; i < subTensorShape.GetNumDimensions(); i++)
181  {
182  // Arm compute indexes tensor coords in reverse order.
183  unsigned int revertedIndex = subTensorShape.GetNumDimensions() - i - 1;
184  coords.set(i, armnn::numeric_cast<int>(subTensorOrigin[revertedIndex]));
185  }
186 
187  const arm_compute::TensorShape parentShape = armcomputetensorutils::BuildArmComputeTensorShape(parent.GetShape());
188  if (!::arm_compute::error_on_invalid_subtensor(__func__, __FILE__, __LINE__, parentShape, coords, shape))
189  {
190  return nullptr;
191  }
192 
193  return std::make_unique<ClSubTensorHandle>(
194  PolymorphicDowncast<IClTensorHandle*>(&parent), shape, coords);
195 }
std::array< unsigned int, MaxNumOfTensorDimensions > Coordinates

◆ CreateSubtraction()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 677 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

679 {
680  return MakeWorkload<ClSubtractionWorkload>(descriptor, info, m_CLCompileContext);
681 }

◆ CreateTensorHandle() [1/2]

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

Reimplemented from WorkloadFactoryBase.

Definition at line 151 of file ClWorkloadFactory.cpp.

References armnn::IgnoreUnused().

Referenced by ClWorkloadFactory::SupportsSubTensors().

153 {
154  IgnoreUnused(IsMemoryManaged);
155  std::unique_ptr<ClTensorHandle> tensorHandle = std::make_unique<ClTensorHandle>(tensorInfo);
156  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
157 
158  return tensorHandle;
159 }
void IgnoreUnused(Ts &&...)

◆ CreateTensorHandle() [2/2]

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

Reimplemented from WorkloadFactoryBase.

Definition at line 161 of file ClWorkloadFactory.cpp.

References armnn::IgnoreUnused().

164 {
165  IgnoreUnused(IsMemoryManaged);
166  std::unique_ptr<ClTensorHandle> tensorHandle = std::make_unique<ClTensorHandle>(tensorInfo, dataLayout);
167  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
168 
169  return tensorHandle;
170 }
void IgnoreUnused(Ts &&...)

◆ CreateTranspose()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 683 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

685 {
686  return MakeWorkload<ClTransposeWorkload>(descriptor, info, m_CLCompileContext);
687 }

◆ CreateTransposeConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 689 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

692 {
693  return MakeWorkload<ClTransposeConvolution2dWorkload>(descriptor,
694  info,
695  m_MemoryManager->GetIntraLayerManager(),
696  m_CLCompileContext);
697 }

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 58 of file ClWorkloadFactory.cpp.

59 {
60  return s_Id;
61 }

◆ IsLayerSupported() [1/2]

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

Definition at line 43 of file ClWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

46 {
47  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
48 }
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 50 of file ClWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

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

◆ SupportsSubTensors()

bool SupportsSubTensors ( ) const
inlineoverridevirtual

Reimplemented from WorkloadFactoryBase.

Definition at line 42 of file ClWorkloadFactory.hpp.

References ARMNN_DEPRECATED_MSG, ClWorkloadFactory::CreateAbs(), ClWorkloadFactory::CreateActivation(), ClWorkloadFactory::CreateAddition(), ClWorkloadFactory::CreateArgMinMax(), ClWorkloadFactory::CreateBatchNormalization(), ClWorkloadFactory::CreateBatchToSpaceNd(), ClWorkloadFactory::CreateCast(), ClWorkloadFactory::CreateComparison(), ClWorkloadFactory::CreateConcat(), ClWorkloadFactory::CreateConstant(), ClWorkloadFactory::CreateConvertFp16ToFp32(), ClWorkloadFactory::CreateConvertFp32ToFp16(), ClWorkloadFactory::CreateConvolution2d(), ClWorkloadFactory::CreateDebug(), ClWorkloadFactory::CreateDepthToSpace(), ClWorkloadFactory::CreateDepthwiseConvolution2d(), ClWorkloadFactory::CreateDequantize(), ClWorkloadFactory::CreateDetectionPostProcess(), ClWorkloadFactory::CreateDivision(), ClWorkloadFactory::CreateElementwiseUnary(), ClWorkloadFactory::CreateEqual(), ClWorkloadFactory::CreateFill(), ClWorkloadFactory::CreateFloor(), ClWorkloadFactory::CreateFullyConnected(), ClWorkloadFactory::CreateGather(), ClWorkloadFactory::CreateGreater(), ClWorkloadFactory::CreateInput(), ClWorkloadFactory::CreateInstanceNormalization(), ClWorkloadFactory::CreateL2Normalization(), ClWorkloadFactory::CreateLogicalBinary(), ClWorkloadFactory::CreateLogSoftmax(), ClWorkloadFactory::CreateLstm(), ClWorkloadFactory::CreateMaximum(), ClWorkloadFactory::CreateMean(), ClWorkloadFactory::CreateMemCopy(), ClWorkloadFactory::CreateMemImport(), ClWorkloadFactory::CreateMerger(), ClWorkloadFactory::CreateMinimum(), ClWorkloadFactory::CreateMultiplication(), ClWorkloadFactory::CreateNormalization(), ClWorkloadFactory::CreateOutput(), ClWorkloadFactory::CreatePad(), ClWorkloadFactory::CreatePermute(), ClWorkloadFactory::CreatePooling2d(), ClWorkloadFactory::CreatePreCompiled(), ClWorkloadFactory::CreatePrelu(), ClWorkloadFactory::CreateQLstm(), ClWorkloadFactory::CreateQuantize(), ClWorkloadFactory::CreateQuantizedLstm(), ClWorkloadFactory::CreateRank(), ClWorkloadFactory::CreateReduce(), ClWorkloadFactory::CreateReshape(), ClWorkloadFactory::CreateResize(), ClWorkloadFactory::CreateResizeBilinear(), ClWorkloadFactory::CreateRsqrt(), ClWorkloadFactory::CreateSlice(), ClWorkloadFactory::CreateSoftmax(), ClWorkloadFactory::CreateSpaceToBatchNd(), ClWorkloadFactory::CreateSpaceToDepth(), ClWorkloadFactory::CreateSplitter(), ClWorkloadFactory::CreateStack(), ClWorkloadFactory::CreateStridedSlice(), ClWorkloadFactory::CreateSubTensorHandle(), ClWorkloadFactory::CreateSubtraction(), ClWorkloadFactory::CreateTensorHandle(), ClWorkloadFactory::CreateTranspose(), ClWorkloadFactory::CreateTransposeConvolution2d(), armnn::Info, and armnn::info.

42 { return true; }

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