ArmNN
 21.11
NeonWorkloadFactory Class Reference

#include <NeonWorkloadFactory.hpp>

Inheritance diagram for NeonWorkloadFactory:
WorkloadFactoryBase IWorkloadFactory

Public Member Functions

 NeonWorkloadFactory (const std::shared_ptr< NeonMemoryManager > &memoryManager)
 
 NeonWorkloadFactory (const std::shared_ptr< NeonMemoryManager > &memoryManager, const IBackendInternal::IBackendSpecificModelContextPtr &modelContextPtr)
 
const BackendIdGetBackendId () const override
 
bool SupportsSubTensors () const override
 
std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< IWorkloadCreateActivation (const ActivationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateAddition (const AdditionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateArgMinMax (const ArgMinMaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchNormalization (const BatchNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchToSpaceNd (const BatchToSpaceNdQueueDescriptor &descriptor, const WorkloadInfo &Info) const override
 
std::unique_ptr< IWorkloadCreateCast (const CastQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateChannelShuffle (const ChannelShuffleQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateComparison (const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &Info) const override
 
std::unique_ptr< IWorkloadCreateConcat (const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConstant (const ConstantQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertBf16ToFp32 (const ConvertBf16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp16ToFp32 (const ConvertFp16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp32ToBf16 (const ConvertFp32ToBf16QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp32ToFp16 (const ConvertFp32ToFp16QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution2d (const Convolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution3d (const Convolution3dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDebug (const DebugQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthToSpace (const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDequantize (const DequantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDetectionPostProcess (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDivision (const DivisionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateElementwiseUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const override
 
std::unique_ptr< 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 void AfterWorkloadsCreated ()
 
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 20 of file NeonWorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ NeonWorkloadFactory() [1/2]

NeonWorkloadFactory ( const std::shared_ptr< NeonMemoryManager > &  memoryManager)

Definition at line 73 of file NeonWorkloadFactory.cpp.

74  : m_MemoryManager(memoryManager), m_ModelContextPtr(IBackendInternal::IBackendSpecificModelContextPtr{})
75 {
76  SetNumberOfThreads();
77 }
std::shared_ptr< IBackendModelContext > IBackendSpecificModelContextPtr

◆ NeonWorkloadFactory() [2/2]

NeonWorkloadFactory ( const std::shared_ptr< NeonMemoryManager > &  memoryManager,
const IBackendInternal::IBackendSpecificModelContextPtr modelContextPtr 
)

Definition at line 79 of file NeonWorkloadFactory.cpp.

81  : m_MemoryManager(memoryManager), m_ModelContextPtr(modelContextPtr)
82 {
83  SetNumberOfThreads();
84 }

Member Function Documentation

◆ CreateActivation()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 134 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors(), and TEST_SUITE().

136 {
137  return std::make_unique<NeonActivationWorkload>(descriptor, info);
138 }

◆ CreateAddition()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 140 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

142 {
143  return std::make_unique<NeonAdditionWorkload>(descriptor, info);
144 }

◆ CreateArgMinMax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 146 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

148 {
149  return std::make_unique<NeonArgMinMaxWorkload>(descriptor, info);
150 }

◆ CreateBatchNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 152 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

154 {
155  return std::make_unique<NeonBatchNormalizationWorkload>(descriptor, info);
156 }

◆ CreateBatchToSpaceNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 158 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

160 {
161  return std::make_unique<NeonBatchToSpaceNdWorkload>(descriptor, info);
162 }

◆ CreateCast()

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

Reimplemented from IWorkloadFactory.

Definition at line 164 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateChannelShuffle()

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

Reimplemented from IWorkloadFactory.

Definition at line 170 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateComparison()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 176 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateConcat()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 182 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateConstant()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 188 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateConvertBf16ToFp32()

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

Reimplemented from IWorkloadFactory.

Definition at line 194 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateConvertFp16ToFp32()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 201 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

204 {
205  return std::make_unique<NeonConvertFp16ToFp32Workload>(descriptor, info);
206 }

◆ CreateConvertFp32ToBf16()

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

Reimplemented from IWorkloadFactory.

Definition at line 208 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

211 {
212  return std::make_unique<NeonConvertFp32ToBf16Workload>(descriptor, info);
213 }

◆ CreateConvertFp32ToFp16()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 215 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

218 {
219  return std::make_unique<NeonConvertFp32ToFp16Workload>(descriptor, info);
220 }

◆ CreateConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 222 of file NeonWorkloadFactory.cpp.

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

Referenced by NeonWorkloadFactory::SupportsSubTensors().

224 {
225  bool isFastMathEnabled = false;
226  if (m_ModelContextPtr)
227  {
228  if (m_ModelContextPtr.get() != nullptr)
229  {
230  auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get());
231  if (modelOptions)
232  {
233  isFastMathEnabled = modelOptions->IsFastMathEnabled();
234  }
235  }
236  }
237  return std::make_unique<NeonConvolution2dWorkload>(descriptor,
238  info,
239  m_MemoryManager->GetIntraLayerManager(),
240  isFastMathEnabled);
241 }

◆ CreateConvolution3d()

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

Reimplemented from IWorkloadFactory.

Definition at line 243 of file NeonWorkloadFactory.cpp.

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

Referenced by NeonWorkloadFactory::SupportsSubTensors().

245 {
246  bool isFastMathEnabled = false;
247  if (m_ModelContextPtr)
248  {
249  if (m_ModelContextPtr.get() != nullptr)
250  {
251  auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get());
252  if (modelOptions)
253  {
254  isFastMathEnabled = modelOptions->IsFastMathEnabled();
255  }
256  }
257  }
258  return std::make_unique<NeonConvolution3dWorkload>(descriptor,
259  info,
260  m_MemoryManager->GetIntraLayerManager(),
261  isFastMathEnabled);
262 }

◆ CreateDebug()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 264 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

266 {
267  return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
268 }

◆ CreateDepthToSpace()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 270 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

272 {
273  return std::make_unique<NeonDepthToSpaceWorkload>(descriptor, info);
274 }

◆ CreateDepthwiseConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 276 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

278 {
279  return std::make_unique<NeonDepthwiseConvolutionWorkload>(descriptor, info);
280 }

◆ CreateDequantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 282 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

284 {
285  return std::make_unique<NeonDequantizeWorkload>(descriptor, info);
286 }

◆ CreateDetectionPostProcess()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 288 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

290 {
291  return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
292 }

◆ CreateDivision()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 294 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateElementwiseUnary()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 300 of file NeonWorkloadFactory.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 NeonWorkloadFactory::SupportsSubTensors().

302 {
303  switch(descriptor.m_Parameters.m_Operation)
304  {
305  case UnaryOperation::Abs:
306  {
307  AbsQueueDescriptor absQueueDescriptor;
308  absQueueDescriptor.m_Inputs = descriptor.m_Inputs;
309  absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
310 
311  return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info);
312  }
313  case UnaryOperation::Exp:
314  return std::make_unique<NeonExpWorkload>(descriptor, info);
316  return std::make_unique<NeonLogicalNotWorkload>(descriptor, info);
317  case UnaryOperation::Log:
318  return std::make_unique<NeonLogWorkload>(descriptor, info);
319  case UnaryOperation::Neg:
320  return std::make_unique<NeonNegWorkload>(descriptor, info);
322  {
323  RsqrtQueueDescriptor rsqrtQueueDescriptor;
324  rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs;
325  rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
326 
327  return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info);
328  }
329  case UnaryOperation::Sin:
330  return std::make_unique<NeonSinWorkload>(descriptor, info);
331  default:
332  return nullptr;
333  }
334 }

◆ CreateFill()

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

Reimplemented from IWorkloadFactory.

Definition at line 336 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

338 {
339  return std::make_unique<NeonFillWorkload>(descriptor, info);
340 }

◆ CreateFloor()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 342 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

344 {
345  return MakeWorkloadHelper<NeonFloorFloatWorkload, NullWorkload>(descriptor, info);
346 }

◆ CreateFullyConnected()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 348 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

350 {
351  return std::make_unique<NeonFullyConnectedWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
352 }

◆ CreateGather()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 354 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

356 {
357  return std::make_unique<NeonGatherWorkload>(descriptor, info);
358 }

◆ CreateInput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 360 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

362 {
363  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
364 }

◆ CreateInstanceNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 366 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateL2Normalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 373 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

375 {
376  return MakeWorkloadHelper<NeonL2NormalizationFloatWorkload, NullWorkload>(descriptor, info,
377  m_MemoryManager->GetIntraLayerManager());
378 }

◆ CreateLogicalBinary()

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

Reimplemented from IWorkloadFactory.

Definition at line 386 of file NeonWorkloadFactory.cpp.

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

Referenced by NeonWorkloadFactory::SupportsSubTensors().

388 {
389  switch(descriptor.m_Parameters.m_Operation)
390  {
392  return std::make_unique<NeonLogicalAndWorkload>(descriptor, info);
394  return std::make_unique<NeonLogicalOrWorkload>(descriptor, info);
395  default:
396  return nullptr;
397  }
398 }

◆ CreateLogSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 380 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

382 {
383  return std::make_unique<NeonLogSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
384 }

◆ CreateLstm()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 400 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

402 {
403  return MakeWorkloadHelper<NeonLstmFloatWorkload, NullWorkload>(descriptor, info);
404 }

◆ CreateMaximum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 406 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateMean()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 412 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateMemCopy()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 418 of file NeonWorkloadFactory.cpp.

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

Referenced by NeonWorkloadFactory::SupportsSubTensors().

420 {
421  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
422  {
423  throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemCopy workload");
424  }
425 
426  return MakeWorkloadHelper<CopyMemGenericWorkload, CopyMemGenericWorkload>(descriptor, info);
427 }

◆ CreateMemImport()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 429 of file NeonWorkloadFactory.cpp.

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

Referenced by NeonWorkloadFactory::SupportsSubTensors().

431 {
432  if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
433  {
434  throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemImport workload");
435  }
436 
437  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
438 }

◆ CreateMinimum()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 440 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateMultiplication()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 446 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

448 {
449  return std::make_unique<NeonMultiplicationWorkload>(descriptor, info);
450 }

◆ CreateNormalization()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 452 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

454 {
455  return MakeWorkloadHelper<NeonNormalizationFloatWorkload, NullWorkload>(descriptor, info,
456  m_MemoryManager->GetIntraLayerManager());
457 }

◆ CreateOutput()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 459 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

461 {
462  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
463 }

◆ CreatePad()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 465 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

467 {
468  return std::make_unique<NeonPadWorkload>(descriptor, info);
469 }

◆ CreatePermute()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 471 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

473 {
474  return std::make_unique<NeonPermuteWorkload>(descriptor, info);
475 }

◆ CreatePooling2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 477 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

479 {
480  return std::make_unique<NeonPooling2dWorkload>(descriptor, info);
481 }

◆ CreatePreCompiled()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 483 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

485 {
486  return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
487 }

◆ CreatePrelu()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 489 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateQLstm()

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

Reimplemented from IWorkloadFactory.

Definition at line 495 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

497 {
498  return std::make_unique<NeonQLstmWorkload>(descriptor, info);
499 }

◆ CreateQuantize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 501 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

503 {
504  return std::make_unique<NeonQuantizeWorkload>(descriptor, info);
505 }

◆ CreateQuantizedLstm()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 507 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

509 {
510  return std::make_unique<NeonQuantizedLstmWorkload>(descriptor, info);
511 }

◆ CreateRank()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 513 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

515 {
516  return std::make_unique<NeonRankWorkload>(descriptor, info);
517 }

◆ CreateReduce()

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

Reimplemented from IWorkloadFactory.

Definition at line 519 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

521 {
522  return std::make_unique<NeonReduceWorkload>(descriptor, info);
523 }

◆ CreateReshape()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 525 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

527 {
528  return std::make_unique<NeonReshapeWorkload>(descriptor, info);
529 }

◆ CreateResize()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 531 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

533 {
534  return std::make_unique<NeonResizeWorkload>(descriptor, info);
535 }

◆ CreateSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 537 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

539 {
540  return std::make_unique<NeonSliceWorkload>(descriptor, info);
541 }

◆ CreateSoftmax()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 543 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

545 {
546  return std::make_unique<NeonSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
547 }

◆ CreateSpaceToBatchNd()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 549 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

551 {
552  return std::make_unique<NeonSpaceToBatchNdWorkload>(descriptor, info);
553 }

◆ CreateSpaceToDepth()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 555 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

557 {
558  return std::make_unique<NeonSpaceToDepthWorkload>(descriptor, info);
559 }

◆ CreateSplitter()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 561 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

563 {
564  return std::make_unique<NeonSplitterWorkload>(descriptor, info);
565 }

◆ CreateStack()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 567 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

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

◆ CreateStridedSlice()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 573 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

575 {
576  return std::make_unique<NeonStridedSliceWorkload>(descriptor, info);
577 }

◆ CreateSubTensorHandle()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 86 of file NeonWorkloadFactory.cpp.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

89 {
90  const arm_compute::TensorShape shape = armcomputetensorutils::BuildArmComputeTensorShape(subTensorShape);
91 
93  coords.set_num_dimensions(subTensorShape.GetNumDimensions());
94  for (unsigned int i = 0; i < subTensorShape.GetNumDimensions(); i++)
95  {
96  // Arm compute indexes tensor coords in reverse order.
97  unsigned int revertedIndex = subTensorShape.GetNumDimensions() - i - 1;
98  coords.set(i, armnn::numeric_cast<int>(subTensorOrigin[revertedIndex]));
99  }
100 
101  const arm_compute::TensorShape parentShape = armcomputetensorutils::BuildArmComputeTensorShape(parent.GetShape());
102  if (!::arm_compute::error_on_invalid_subtensor(__func__, __FILE__, __LINE__, parentShape, coords, shape))
103  {
104  return nullptr;
105  }
106 
107  return std::make_unique<NeonSubTensorHandle>(
108  PolymorphicDowncast<IAclTensorHandle*>(&parent), shape, coords);
109 }
std::array< unsigned int, MaxNumOfTensorDimensions > Coordinates

◆ CreateSubtraction()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 579 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

581 {
582  return std::make_unique<NeonSubtractionWorkload>(descriptor, info);
583 }

◆ CreateTensorHandle() [1/2]

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

Reimplemented from WorkloadFactoryBase.

Definition at line 111 of file NeonWorkloadFactory.cpp.

Referenced by NeonWorkloadFactory::SupportsSubTensors(), and TEST_SUITE().

113 {
114  auto tensorHandle = std::make_unique<NeonTensorHandle>(tensorInfo);
115  if (IsMemoryManaged)
116  {
117  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
118  }
119  return tensorHandle;
120 }

◆ 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 122 of file NeonWorkloadFactory.cpp.

125 {
126  auto tensorHandle = std::make_unique<NeonTensorHandle>(tensorInfo, dataLayout);
127  if (IsMemoryManaged)
128  {
129  tensorHandle->SetMemoryGroup(m_MemoryManager->GetInterLayerMemoryGroup());
130  }
131  return tensorHandle;
132 }

◆ CreateTranspose()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 585 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

587 {
588  return std::make_unique<NeonTransposeWorkload>(descriptor, info);
589 }

◆ CreateTransposeConvolution2d()

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

Reimplemented from WorkloadFactoryBase.

Definition at line 591 of file NeonWorkloadFactory.cpp.

References armnn::info.

Referenced by NeonWorkloadFactory::SupportsSubTensors().

594 {
595  return std::make_unique<NeonTransposeConvolution2dWorkload>(descriptor, info,
596  m_MemoryManager->GetIntraLayerManager());
597 }

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 49 of file NeonWorkloadFactory.cpp.

References NeonBackendModelContext::GetNumberOfThreads().

50 {
51  return s_Id;
52 }

◆ IsLayerSupported() [1/2]

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

Definition at line 34 of file NeonWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

37 {
38  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported);
39 }
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 41 of file NeonWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

45 {
46  return IWorkloadFactory::IsLayerSupported(s_Id, layer, dataType, outReasonIfUnsupported, modelOptions);
47 }
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 39 of file NeonWorkloadFactory.hpp.

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

39 { return true; }

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