ArmNN
 21.11
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< 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< 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< 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< 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< 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< 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 188 of file ClWorkloadFactory.cpp.

189  : m_MemoryManager(memoryManager), m_ModelContextPtr(IBackendInternal::IBackendSpecificModelContextPtr{})
190 {
191  InitializeCLCompileContext();
192 }
std::shared_ptr< IBackendModelContext > IBackendSpecificModelContextPtr

◆ ClWorkloadFactory() [2/2]

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

Definition at line 194 of file ClWorkloadFactory.cpp.

196  : m_MemoryManager(memoryManager), m_ModelContextPtr(modelContextPtr)
197 {
198  InitializeCLCompileContext();
199 }

Member Function Documentation

◆ AfterWorkloadsCreated()

void AfterWorkloadsCreated ( )
overridevirtual

Reimplemented from IWorkloadFactory.

Definition at line 66 of file ClWorkloadFactory.cpp.

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

67 {
68  if(m_ModelContextPtr)
69  {
70  auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
71  if (modelOptions->SaveCachedNetwork())
72  {
73  ClContextSerializer serializer;
74  serializer.Serialize(m_CLCompileContext);
75  auto cachedFd = modelOptions->GetCachedFileDescriptor();
76  if (cachedFd != -1)
77  {
78  std::vector<uint8_t> compiledContextData;
79  std::stringstream stream;
80  bool serialized = serializer.SaveSerializedToStream(stream);
81  if (serialized)
82  {
83  std::string const serializedString{stream.str()};
84  std::copy(serializedString.begin(),
85  serializedString.end(),
86  std::back_inserter(compiledContextData));
87  auto success = write(cachedFd, compiledContextData.data(), compiledContextData.size());
88  if (success == -1)
89  {
90  ARMNN_LOG(info) << "ClWorkloadFactory:: Could not cache the compiled context!";
91  }
92  }
93  }
94 
95  // Save map to a filepath provided in ModelOptions
96  auto filePath = modelOptions->GetCachedNetworkFilePath();
97  if (filePath != "" && fs::exists(filePath) && fs::is_regular_file(filePath))
98  {
99  // Serialize ClContext to the file specified
100  std::ofstream file(filePath, std::ios::out | std::ios::binary);
101  serializer.SaveSerializedToStream(file);
102  }
103  }
104  }
105 }
#define ARMNN_LOG(severity)
Definition: Logging.hpp:202

◆ CreateActivation()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 247 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

249 {
250  return MakeWorkload<ClActivationWorkload>(descriptor, info, m_CLCompileContext);
251 }

◆ CreateAddition()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 253 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

255 {
256  return MakeWorkload<ClAdditionWorkload>(descriptor, info, m_CLCompileContext);
257 }

◆ CreateArgMinMax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 259 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

261 {
262  return std::make_unique<ClArgMinMaxWorkload>(descriptor, info, m_CLCompileContext);
263 }

◆ CreateBatchNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 265 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

268 {
269  return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
270 }

◆ CreateBatchToSpaceNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 272 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

274 {
275  return MakeWorkload<ClBatchToSpaceNdWorkload>(descriptor, info, m_CLCompileContext);
276 }

◆ CreateCast()

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

Reimplemented from IWorkloadFactory.

Definition at line 278 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

280 {
281  return MakeWorkload<ClCastWorkload>(descriptor, info, m_CLCompileContext);
282 }

◆ CreateChannelShuffle()

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

Reimplemented from IWorkloadFactory.

Definition at line 284 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

286 {
287  return MakeWorkload<ClChannelShuffleWorkload>(descriptor, info, m_CLCompileContext);
288 }

◆ CreateComparison()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 290 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

292 {
293  return MakeWorkload<ClComparisonWorkload>(descriptor, info, m_CLCompileContext);
294 }

◆ CreateConcat()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 296 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

298 {
299  return MakeWorkload<ClConcatWorkload>(descriptor, info, m_CLCompileContext);
300 }

◆ CreateConstant()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 302 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

304 {
305  return MakeWorkload<ClConstantWorkload>(descriptor, info, m_CLCompileContext);
306 }

◆ CreateConvertFp16ToFp32()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 308 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

311 {
312  return MakeWorkload<ClConvertFp16ToFp32Workload>(descriptor, info, m_CLCompileContext);
313 }

◆ CreateConvertFp32ToFp16()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 315 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

318 {
319  return MakeWorkload<ClConvertFp32ToFp16Workload>(descriptor, info, m_CLCompileContext);
320 }

◆ CreateConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 322 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

324 {
325  bool isFastMathEnabled = false;
326  if (m_ModelContextPtr)
327  {
328  if (m_ModelContextPtr.get() != nullptr)
329  {
330  auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
331  if (modelOptions)
332  {
333  isFastMathEnabled = modelOptions->IsFastMathEnabled();
334  }
335  }
336  }
337  return MakeWorkload<ClConvolution2dWorkload>(descriptor,
338  info,
339  m_MemoryManager->GetIntraLayerManager(),
340  m_CLCompileContext,
341  isFastMathEnabled);
342 }

◆ CreateConvolution3d()

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

Reimplemented from IWorkloadFactory.

Definition at line 344 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

346 {
347  bool isFastMathEnabled = false;
348  if (m_ModelContextPtr)
349  {
350  if (m_ModelContextPtr.get() != nullptr)
351  {
352  auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
353  if (modelOptions)
354  {
355  isFastMathEnabled = modelOptions->IsFastMathEnabled();
356  }
357  }
358  }
359  return MakeWorkload<ClConvolution3dWorkload>(descriptor,
360  info,
361  m_MemoryManager->GetIntraLayerManager(),
362  m_CLCompileContext,
363  isFastMathEnabled);
364 }

◆ CreateDebug()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 366 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

368 {
369  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
370 }

◆ CreateDepthToSpace()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 372 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

374 {
375  return MakeWorkload<ClDepthToSpaceWorkload>(descriptor, info, m_CLCompileContext);
376 }

◆ CreateDepthwiseConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 378 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

381 {
382  return MakeWorkload<ClDepthwiseConvolutionWorkload>(descriptor, info, m_CLCompileContext);
383 }

◆ CreateDequantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 385 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

387 {
388  return MakeWorkload<ClDequantizeWorkload>(descriptor, info, m_CLCompileContext);
389 }

◆ CreateDetectionPostProcess()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 391 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

394 {
395  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
396 }

◆ CreateDivision()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 398 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

400 {
401  return std::make_unique<ClDivisionWorkload>(descriptor, info, m_CLCompileContext);
402 }

◆ CreateElementwiseUnary()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 404 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::SupportsSubTensors().

406 {
407  switch(descriptor.m_Parameters.m_Operation)
408  {
409  case UnaryOperation::Abs:
410  {
411  AbsQueueDescriptor absQueueDescriptor;
412  absQueueDescriptor.m_Inputs = descriptor.m_Inputs;
413  absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
414 
415  return std::make_unique<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext);
416  }
417  case UnaryOperation::Exp:
418  return std::make_unique<ClExpWorkload>(descriptor, info, m_CLCompileContext);
419  case UnaryOperation::Log:
420  return std::make_unique<ClLogWorkload>(descriptor, info, m_CLCompileContext);
422  return std::make_unique<ClLogicalNotWorkload>(descriptor, info, m_CLCompileContext);
423  case UnaryOperation::Neg:
424  return std::make_unique<ClNegWorkload>(descriptor, info, m_CLCompileContext);
426  {
427  RsqrtQueueDescriptor rsqrtQueueDescriptor;
428  rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs;
429  rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
430 
431  return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext);
432  }
433  case UnaryOperation::Sin:
434  return std::make_unique<ClSinWorkload>(descriptor, info, m_CLCompileContext);
435  default:
436  return nullptr;
437  }
438 }

◆ CreateFill()

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

Reimplemented from IWorkloadFactory.

Definition at line 440 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

442 {
443  return std::make_unique<ClFillWorkload>(descriptor, info, m_CLCompileContext);
444 }

◆ CreateFloor()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 446 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

448 {
449  return MakeWorkload<ClFloorFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
450 }

◆ CreateFullyConnected()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 452 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

454 {
455  return MakeWorkload<ClFullyConnectedWorkload>(descriptor,
456  info,
457  m_MemoryManager->GetIntraLayerManager(),
458  m_CLCompileContext);
459 }

◆ CreateGather()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 461 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

463 {
464  return MakeWorkload<ClGatherWorkload>(descriptor, info, m_CLCompileContext);
465 }

◆ CreateInput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 467 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

469 {
470  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
471 }

◆ CreateInstanceNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 473 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

476 {
477  return MakeWorkload<ClInstanceNormalizationWorkload>(descriptor, info, m_CLCompileContext);
478 }

◆ CreateL2Normalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 480 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

482 {
483  return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
484 }

◆ CreateLogicalBinary()

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

Reimplemented from IWorkloadFactory.

Definition at line 486 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

488 {
489  switch(descriptor.m_Parameters.m_Operation)
490  {
492  return std::make_unique<ClLogicalAndWorkload>(descriptor, info, m_CLCompileContext);
494  return std::make_unique<ClLogicalOrWorkload>(descriptor, info, m_CLCompileContext);
495  default:
496  return nullptr;
497  }
498 }

◆ CreateLogSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 500 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

502 {
503  return MakeWorkload<ClLogSoftmaxWorkload>(descriptor,
504  info,
505  m_MemoryManager->GetIntraLayerManager(),
506  m_CLCompileContext);
507 }

◆ CreateLstm()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 509 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

511 {
512  return MakeWorkload<ClLstmFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
513 }

◆ CreateMaximum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 515 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

517 {
518  return MakeWorkload<ClMaximumWorkload>(descriptor, info, m_CLCompileContext);
519 }

◆ CreateMean()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 521 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

523 {
524  return MakeWorkload<ClMeanWorkload>(descriptor, info, m_CLCompileContext);
525 }

◆ CreateMemCopy()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 527 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

529 {
530  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
531  {
532  throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemCopy workload");
533  }
534 
535  return MakeWorkload<CopyMemGenericWorkload>(descriptor, info);
536 }

◆ CreateMemImport()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 538 of file ClWorkloadFactory.cpp.

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

Referenced by ClWorkloadFactory::SupportsSubTensors().

540 {
541  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
542  {
543  throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemImport workload");
544  }
545 
546  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
547 }

◆ CreateMinimum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 549 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

551 {
552  return MakeWorkload<ClMinimumWorkload>(descriptor, info, m_CLCompileContext);
553 }

◆ CreateMultiplication()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 555 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

557 {
558  return MakeWorkload<ClMultiplicationWorkload>(descriptor, info, m_CLCompileContext);
559 }

◆ CreateNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 561 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

563 {
564  return MakeWorkload<ClNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
565 }

◆ CreateOutput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 567 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

569 {
570  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
571 }

◆ CreatePad()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 573 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

575 {
576  return MakeWorkload<ClPadWorkload>(descriptor, info, m_CLCompileContext);
577 }

◆ CreatePermute()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 579 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

581 {
582  return MakeWorkload<ClPermuteWorkload>(descriptor, info, m_CLCompileContext);
583 }

◆ CreatePooling2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 585 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

587 {
588  return MakeWorkload<ClPooling2dWorkload>(descriptor, info, m_CLCompileContext);
589 }

◆ CreatePreCompiled()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 591 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

593 {
594  return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
595 }

◆ CreatePrelu()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 597 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

599 {
600  return MakeWorkload<ClPreluWorkload>(descriptor, info, m_CLCompileContext);
601 }

◆ CreateQLstm()

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

Reimplemented from IWorkloadFactory.

Definition at line 603 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

605 {
606  return std::make_unique<ClQLstmWorkload>(descriptor, info, m_CLCompileContext);
607 }

◆ CreateQuantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 609 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

611 {
612  return MakeWorkload<ClQuantizeWorkload>(descriptor, info, m_CLCompileContext);
613 }

◆ CreateQuantizedLstm()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 615 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

617 {
618  return MakeWorkload<ClQuantizedLstmWorkload>(descriptor, info, m_CLCompileContext);
619 }

◆ CreateRank()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 621 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

623 {
624  return std::make_unique<ClRankWorkload>(descriptor, info);
625 }

◆ CreateReduce()

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

Reimplemented from IWorkloadFactory.

Definition at line 627 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

629 {
630  return std::make_unique<ClReduceWorkload>(descriptor, info);
631 }

◆ CreateReshape()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 633 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

635 {
636  return MakeWorkload<ClReshapeWorkload>(descriptor, info, m_CLCompileContext);
637 }

◆ CreateResize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 639 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

641 {
642  return MakeWorkload<ClResizeWorkload>(descriptor, info, m_CLCompileContext);
643 }

◆ CreateSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 645 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

647 {
648  return MakeWorkload<ClSliceWorkload>(descriptor, info, m_CLCompileContext);
649 }

◆ CreateSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 651 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

653 {
654  return std::make_unique<ClSoftmaxWorkload>(descriptor,
655  info,
656  m_MemoryManager->GetIntraLayerManager(),
657  m_CLCompileContext);
658 }

◆ CreateSpaceToBatchNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 660 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

662 {
663  return MakeWorkload<ClSpaceToBatchNdWorkload>(descriptor, info, m_CLCompileContext);
664 }

◆ CreateSpaceToDepth()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 666 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

668 {
669  return MakeWorkload<ClSpaceToDepthWorkload>(descriptor, info, m_CLCompileContext);
670 }

◆ CreateSplitter()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 672 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

674 {
675  return MakeWorkload<ClSplitterWorkload>(descriptor, info, m_CLCompileContext);
676 }

◆ CreateStack()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 678 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

680 {
681  return MakeWorkload<ClStackWorkload>(descriptor, info, m_CLCompileContext);
682 }

◆ CreateStridedSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 684 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

686 {
687  return MakeWorkload<ClStridedSliceWorkload>(descriptor, info, m_CLCompileContext);
688 }

◆ CreateSubTensorHandle()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 222 of file ClWorkloadFactory.cpp.

Referenced by ClWorkloadFactory::SupportsSubTensors().

225 {
227  arm_compute::TensorShape shape = armcomputetensorutils::BuildArmComputeTensorShape(subTensorShape);
228 
229  coords.set_num_dimensions(subTensorShape.GetNumDimensions());
230  for (unsigned int i = 0; i < subTensorShape.GetNumDimensions(); i++)
231  {
232  // Arm compute indexes tensor coords in reverse order.
233  unsigned int revertedIndex = subTensorShape.GetNumDimensions() - i - 1;
234  coords.set(i, armnn::numeric_cast<int>(subTensorOrigin[revertedIndex]));
235  }
236 
237  const arm_compute::TensorShape parentShape = armcomputetensorutils::BuildArmComputeTensorShape(parent.GetShape());
238  if (!::arm_compute::error_on_invalid_subtensor(__func__, __FILE__, __LINE__, parentShape, coords, shape))
239  {
240  return nullptr;
241  }
242 
243  return std::make_unique<ClSubTensorHandle>(
244  PolymorphicDowncast<IClTensorHandle*>(&parent), shape, coords);
245 }
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 690 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

692 {
693  return MakeWorkload<ClSubtractionWorkload>(descriptor, info, m_CLCompileContext);
694 }

◆ CreateTensorHandle() [1/2]

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

Reimplemented from WorkloadFactoryBase.

Definition at line 201 of file ClWorkloadFactory.cpp.

References armnn::IgnoreUnused().

Referenced by ClWorkloadFactory::SupportsSubTensors().

203 {
204  IgnoreUnused(IsMemoryManaged);
205  std::unique_ptr<ClTensorHandle> tensorHandle = std::make_unique<ClTensorHandle>(tensorInfo);
206  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
207 
208  return tensorHandle;
209 }
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 211 of file ClWorkloadFactory.cpp.

References armnn::IgnoreUnused().

214 {
215  IgnoreUnused(IsMemoryManaged);
216  std::unique_ptr<ClTensorHandle> tensorHandle = std::make_unique<ClTensorHandle>(tensorInfo, dataLayout);
217  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
218 
219  return tensorHandle;
220 }
void IgnoreUnused(Ts &&...)

◆ CreateTranspose()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 696 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

698 {
699  return MakeWorkload<ClTransposeWorkload>(descriptor, info, m_CLCompileContext);
700 }

◆ CreateTransposeConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 702 of file ClWorkloadFactory.cpp.

References armnn::info.

Referenced by ClWorkloadFactory::SupportsSubTensors().

705 {
706  return MakeWorkload<ClTransposeConvolution2dWorkload>(descriptor,
707  info,
708  m_MemoryManager->GetIntraLayerManager(),
709  m_CLCompileContext);
710 }

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 61 of file ClWorkloadFactory.cpp.

62 {
63  return s_Id;
64 }

◆ IsLayerSupported() [1/2]

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

Definition at line 46 of file ClWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

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

References IWorkloadFactory::IsLayerSupported().

57 {
58  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported, modelOptions);
59 }
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::CreateActivation(), ClWorkloadFactory::CreateAddition(), ClWorkloadFactory::CreateArgMinMax(), ClWorkloadFactory::CreateBatchNormalization(), ClWorkloadFactory::CreateBatchToSpaceNd(), ClWorkloadFactory::CreateCast(), ClWorkloadFactory::CreateChannelShuffle(), ClWorkloadFactory::CreateComparison(), ClWorkloadFactory::CreateConcat(), ClWorkloadFactory::CreateConstant(), ClWorkloadFactory::CreateConvertFp16ToFp32(), ClWorkloadFactory::CreateConvertFp32ToFp16(), ClWorkloadFactory::CreateConvolution2d(), ClWorkloadFactory::CreateConvolution3d(), ClWorkloadFactory::CreateDebug(), ClWorkloadFactory::CreateDepthToSpace(), ClWorkloadFactory::CreateDepthwiseConvolution2d(), ClWorkloadFactory::CreateDequantize(), ClWorkloadFactory::CreateDetectionPostProcess(), ClWorkloadFactory::CreateDivision(), ClWorkloadFactory::CreateElementwiseUnary(), ClWorkloadFactory::CreateFill(), ClWorkloadFactory::CreateFloor(), ClWorkloadFactory::CreateFullyConnected(), ClWorkloadFactory::CreateGather(), ClWorkloadFactory::CreateInput(), ClWorkloadFactory::CreateInstanceNormalization(), ClWorkloadFactory::CreateL2Normalization(), ClWorkloadFactory::CreateLogicalBinary(), ClWorkloadFactory::CreateLogSoftmax(), ClWorkloadFactory::CreateLstm(), ClWorkloadFactory::CreateMaximum(), ClWorkloadFactory::CreateMean(), ClWorkloadFactory::CreateMemCopy(), ClWorkloadFactory::CreateMemImport(), 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::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: