ArmNN
 20.08
RefWorkloadFactory Class Reference

#include <RefWorkloadFactory.hpp>

Inheritance diagram for RefWorkloadFactory:
IWorkloadFactory

Public Member Functions

 RefWorkloadFactory (const std::shared_ptr< RefMemoryManager > &memoryManager)
 
 RefWorkloadFactory ()
 
 ~RefWorkloadFactory ()
 
const BackendIdGetBackendId () const override
 
bool SupportsSubTensors () const override
 
std::unique_ptr< ITensorHandleCreateSubTensorHandle (ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< ITensorHandleCreateTensorHandle (const TensorInfo &tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged=true) const override
 
std::unique_ptr< IWorkloadCreateAbs (const AbsQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateActivation (const ActivationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateAddition (const AdditionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateArgMinMax (const ArgMinMaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchNormalization (const BatchNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateBatchToSpaceNd (const BatchToSpaceNdQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< 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< IWorkloadCreateDebug (const DebugQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthToSpace (const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDequantize (const DequantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDetectionPostProcess (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDivision (const DivisionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateElementwiseUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateEqual (const EqualQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFakeQuantization (const FakeQuantizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFill (const FillQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFloor (const FloorQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFullyConnected (const FullyConnectedQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateGather (const GatherQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateGreater (const GreaterQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateInput (const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateInstanceNormalization (const InstanceNormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateL2Normalization (const L2NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateLogSoftmax (const LogSoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateLstm (const LstmQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMaximum (const MaximumQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMean (const MeanQueueDescriptor &descriptor, const WorkloadInfo &Info) const override
 
std::unique_ptr< IWorkloadCreateMemCopy (const MemCopyQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMemImport (const MemImportQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMerger (const MergerQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMinimum (const MinimumQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateMultiplication (const MultiplicationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateNormalization (const NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateOutput (const OutputQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePad (const PadQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePermute (const PermuteQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePooling2d (const Pooling2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePreCompiled (const PreCompiledQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreatePrelu (const PreluQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateQLstm (const QLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateQuantize (const QuantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateRank (const RankQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateReshape (const ReshapeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateResize (const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateResizeBilinear (const ResizeBilinearQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateRsqrt (const RsqrtQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSlice (const SliceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSoftmax (const SoftmaxQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSpaceToBatchNd (const SpaceToBatchNdQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSpaceToDepth (const SpaceToDepthQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSplitter (const SplitterQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateStack (const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateStridedSlice (const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateSubtraction (const SubtractionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateTranspose (const TransposeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateTransposeConvolution2d (const TransposeConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
- Public Member Functions inherited from IWorkloadFactory
virtual ~IWorkloadFactory ()
 
virtual std::unique_ptr< IWorkloadCreateMerge (const MergeQueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateQuantizedLstm (const QuantizedLstmQueueDescriptor &descriptor, const WorkloadInfo &info) const
 
virtual std::unique_ptr< IWorkloadCreateSwitch (const SwitchQueueDescriptor &descriptor, const WorkloadInfo &Info) const
 

Static Public Member Functions

static bool IsLayerSupported (const Layer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
 
- Static 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)
 

Detailed Description

Definition at line 30 of file RefWorkloadFactory.hpp.

Constructor & Destructor Documentation

◆ RefWorkloadFactory() [1/2]

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

Definition at line 84 of file RefWorkloadFactory.cpp.

85  : m_MemoryManager(memoryManager)
86 {
87 }

◆ RefWorkloadFactory() [2/2]

Definition at line 89 of file RefWorkloadFactory.cpp.

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

◆ ~RefWorkloadFactory()

Member Function Documentation

◆ CreateAbs()

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

Reimplemented from IWorkloadFactory.

Definition at line 125 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

127 {
128  IgnoreUnused(descriptor);
129  ElementwiseUnaryQueueDescriptor elementwiseUnaryDescriptor;
130  elementwiseUnaryDescriptor.m_Parameters.m_Operation = UnaryOperation::Abs;
131 
132  return CreateElementwiseUnary(elementwiseUnaryDescriptor, info);
133 }
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateActivation()

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

Reimplemented from IWorkloadFactory.

Definition at line 135 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateAddition()

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

Reimplemented from IWorkloadFactory.

Definition at line 141 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

143 {
144  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
145  {
146  return std::make_unique<RefAdditionWorkload<int32_t>>(descriptor, info);
147  }
148  else
149  {
150  return std::make_unique<RefAdditionWorkload<float>>(descriptor, info);
151  }
152 }

◆ CreateArgMinMax()

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

Reimplemented from IWorkloadFactory.

Definition at line 154 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

156 {
157  return std::make_unique<RefArgMinMaxWorkload>(descriptor, info);
158 }

◆ CreateBatchNormalization()

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

Reimplemented from IWorkloadFactory.

Definition at line 160 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

163 {
164  return std::make_unique<RefBatchNormalizationWorkload>(descriptor, info);
165 }

◆ CreateBatchToSpaceNd()

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

Reimplemented from IWorkloadFactory.

Definition at line 167 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

169 {
170  return std::make_unique<RefBatchToSpaceNdWorkload>(descriptor, info);
171 }

◆ CreateComparison()

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

Reimplemented from IWorkloadFactory.

Definition at line 173 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateEqual(), RefWorkloadFactory::CreateGreater(), and RefWorkloadFactory::CreateSubTensorHandle().

175 {
176  return std::make_unique<RefComparisonWorkload>(descriptor, info);
177 }

◆ CreateConcat()

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

Reimplemented from IWorkloadFactory.

Definition at line 179 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateMerger(), and RefWorkloadFactory::CreateSubTensorHandle().

181 {
182  return std::make_unique<RefConcatWorkload>(descriptor, info);
183 }

◆ CreateConstant()

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

Reimplemented from IWorkloadFactory.

Definition at line 185 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

187 {
188  return std::make_unique<RefConstantWorkload>(descriptor, info);
189 }

◆ CreateConvertBf16ToFp32()

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

Reimplemented from IWorkloadFactory.

Definition at line 191 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

194 {
195  return std::make_unique<RefConvertBf16ToFp32Workload>(descriptor, info);
196 }

◆ CreateConvertFp16ToFp32()

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

Reimplemented from IWorkloadFactory.

Definition at line 198 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateConvertFp32ToBf16()

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

Reimplemented from IWorkloadFactory.

Definition at line 205 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateConvertFp32ToFp16()

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

Reimplemented from IWorkloadFactory.

Definition at line 212 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateConvolution2d()

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

Reimplemented from IWorkloadFactory.

Definition at line 219 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateDebug()

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

Reimplemented from IWorkloadFactory.

Definition at line 225 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

227 {
228  if (IsBFloat16(info))
229  {
230  return std::make_unique<RefDebugBFloat16Workload>(descriptor, info);
231  }
232  if (IsFloat16(info))
233  {
234  return std::make_unique<RefDebugFloat16Workload>(descriptor, info);
235  }
236  if (IsQSymmS16(info))
237  {
238  return std::make_unique<RefDebugQSymmS16Workload>(descriptor, info);
239  }
240  if (IsQSymmS8(info))
241  {
242  return std::make_unique<RefDebugQSymmS8Workload>(descriptor, info);
243  }
244  if (IsQAsymmU8(info))
245  {
246  return std::make_unique<RefDebugQAsymmU8Workload>(descriptor, info);
247  }
248  if (IsQAsymmS8(info))
249  {
250  return std::make_unique<RefDebugQAsymmS8Workload>(descriptor, info);
251  }
252  if (IsSigned32(info))
253  {
254  return std::make_unique<RefDebugSigned32Workload>(descriptor, info);
255  }
256 
257  return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(descriptor, info);
258 }
bool IsQAsymmS8(const WorkloadInfo &info)
bool IsQAsymmU8(const WorkloadInfo &info)
bool IsQSymmS8(const WorkloadInfo &info)
bool IsBFloat16(const WorkloadInfo &info)
bool IsFloat16(const WorkloadInfo &info)
bool IsSigned32(const WorkloadInfo &info)
bool IsQSymmS16(const WorkloadInfo &info)

◆ CreateDepthToSpace()

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

Reimplemented from IWorkloadFactory.

Definition at line 260 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

262 {
263  return std::make_unique<RefDepthToSpaceWorkload>(descriptor, info);
264 }

◆ CreateDepthwiseConvolution2d()

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

Reimplemented from IWorkloadFactory.

Definition at line 266 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

269 {
270  return std::make_unique<RefDepthwiseConvolution2dWorkload>(descriptor, info);
271 }

◆ CreateDequantize()

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

Reimplemented from IWorkloadFactory.

Definition at line 273 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

275 {
276  return std::make_unique<RefDequantizeWorkload>(descriptor, info);
277 }

◆ CreateDetectionPostProcess()

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

Reimplemented from IWorkloadFactory.

Definition at line 279 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

282 {
283  return std::make_unique<RefDetectionPostProcessWorkload>(descriptor, info);
284 }

◆ CreateDivision()

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

Reimplemented from IWorkloadFactory.

Definition at line 286 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

288 {
289  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
290  {
291  return std::make_unique<RefDivisionWorkload<int32_t>>(descriptor, info);
292  }
293  else
294  {
295  return std::make_unique<RefDivisionWorkload<float>>(descriptor, info);
296  }
297 }

◆ CreateElementwiseUnary()

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

Reimplemented from IWorkloadFactory.

Definition at line 299 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateAbs(), RefWorkloadFactory::CreateRsqrt(), and RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateEqual()

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

Reimplemented from IWorkloadFactory.

Definition at line 305 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

307 {
308  IgnoreUnused(descriptor);
309  ComparisonQueueDescriptor comparisonDescriptor;
310  comparisonDescriptor.m_Parameters.m_Operation = ComparisonOperation::Equal;
311 
312  return CreateComparison(comparisonDescriptor, info);
313 }
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateFakeQuantization()

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

Reimplemented from IWorkloadFactory.

Definition at line 315 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

317 {
318  return MakeWorkload<RefFakeQuantizationFloat32Workload, NullWorkload>(descriptor, info);
319 }

◆ CreateFill()

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

Reimplemented from IWorkloadFactory.

Definition at line 321 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

323 {
324  return std::make_unique<RefFillWorkload>(descriptor, info);
325 }

◆ CreateFloor()

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

Reimplemented from IWorkloadFactory.

Definition at line 327 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

329 {
330  if(IsQuantizedType(info.m_InputTensorInfos[0].GetDataType()))
331  {
332  return nullptr;
333  }
334  else
335  {
336  return std::make_unique<RefFloorWorkload>(descriptor, info);
337  }
338 }
constexpr bool IsQuantizedType()
Definition: TypesUtils.hpp:236

◆ CreateFullyConnected()

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

Reimplemented from IWorkloadFactory.

Definition at line 340 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateGather()

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

Reimplemented from IWorkloadFactory.

Definition at line 347 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

349 {
350  return std::make_unique<RefGatherWorkload>(descriptor, info);
351 }

◆ CreateGreater()

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

Reimplemented from IWorkloadFactory.

Definition at line 353 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

355 {
356  IgnoreUnused(descriptor);
357  ComparisonQueueDescriptor comparisonDescriptor;
358  comparisonDescriptor.m_Parameters.m_Operation = ComparisonOperation::Greater;
359 
360  return CreateComparison(comparisonDescriptor, info);
361 }
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateInput()

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

Implements IWorkloadFactory.

Definition at line 363 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

365 {
366  if (info.m_InputTensorInfos.empty() )
367  {
368  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Input cannot be zero length");
369  }
370  if (info.m_OutputTensorInfos.empty())
371  {
372  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length");
373  }
374 
375  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
376  {
377  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: data input and output differ in byte count.");
378  }
379 
380  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
381 }

◆ CreateInstanceNormalization()

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

Reimplemented from IWorkloadFactory.

Definition at line 383 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateL2Normalization()

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

Reimplemented from IWorkloadFactory.

Definition at line 390 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

392 {
393  return std::make_unique<RefL2NormalizationWorkload>(descriptor, info);
394 }

◆ CreateLogSoftmax()

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

Reimplemented from IWorkloadFactory.

Definition at line 396 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateLstm()

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

Reimplemented from IWorkloadFactory.

Definition at line 402 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateMaximum()

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

Reimplemented from IWorkloadFactory.

Definition at line 408 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

410 {
411  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
412  {
413  return std::make_unique<RefMaximumWorkload<int32_t>>(descriptor, info);
414  }
415  else
416  {
417  return std::make_unique<RefMaximumWorkload<float>>(descriptor, info);
418  }
419 }

◆ CreateMean()

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

Reimplemented from IWorkloadFactory.

Definition at line 421 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateMemCopy()

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

Reimplemented from IWorkloadFactory.

Definition at line 427 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

429 {
430  if (descriptor.m_Inputs.empty())
431  {
432  throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor.");
433  }
434  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
435 }

◆ CreateMemImport()

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

Reimplemented from IWorkloadFactory.

Definition at line 437 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

439 {
440  if (descriptor.m_Inputs.empty())
441  {
442  throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor.");
443  }
444  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
445 }

◆ CreateMerger()

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

Reimplemented from IWorkloadFactory.

Definition at line 447 of file RefWorkloadFactory.cpp.

References RefWorkloadFactory::CreateConcat().

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

449 {
450  return CreateConcat(descriptor, info);
451 }
std::unique_ptr< IWorkload > CreateConcat(const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateMinimum()

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

Reimplemented from IWorkloadFactory.

Definition at line 453 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

455 {
456  if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
457  {
458  return std::make_unique<RefMinimumWorkload<int32_t>>(descriptor, info);
459  }
460  else
461  {
462  return std::make_unique<RefMinimumWorkload<float>>(descriptor, info);
463  }
464 }

◆ CreateMultiplication()

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

Reimplemented from IWorkloadFactory.

Definition at line 466 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateNormalization()

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

Reimplemented from IWorkloadFactory.

Definition at line 479 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

481 {
482  return std::make_unique<RefNormalizationWorkload>(descriptor, info);
483 }

◆ CreateOutput()

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

Reimplemented from IWorkloadFactory.

Definition at line 485 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

487 {
488  if (info.m_InputTensorInfos.empty() )
489  {
490  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Input cannot be zero length");
491  }
492  if (info.m_OutputTensorInfos.empty())
493  {
494  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Output cannot be zero length");
495  }
496  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
497  {
498  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output differ in byte count.");
499  }
500 
501  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
502 }

◆ CreatePad()

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

Reimplemented from IWorkloadFactory.

Definition at line 504 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

506 {
507  return std::make_unique<RefPadWorkload>(descriptor, info);
508 }

◆ CreatePermute()

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

Reimplemented from IWorkloadFactory.

Definition at line 510 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

512 {
513  if (IsQSymmS16(info))
514  {
515  return std::make_unique<RefPermuteQSymm16Workload>(descriptor, info);
516  }
517  else if (IsBFloat16(info))
518  {
519  return std::make_unique<RefPermuteBFloat16Workload>(descriptor, info);
520  }
521  else if (IsQAsymmS8(info))
522  {
523  return std::make_unique<RefPermuteQAsymmS8Workload>(descriptor, info);
524  }
526  NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
527 }
RefPermuteWorkload< DataType::Float16 > RefPermuteFloat16Workload
bool IsQAsymmS8(const WorkloadInfo &info)
RefPermuteWorkload< DataType::Float32 > RefPermuteFloat32Workload
bool IsBFloat16(const WorkloadInfo &info)
RefPermuteWorkload< DataType::QAsymmU8 > RefPermuteQAsymm8Workload
bool IsQSymmS16(const WorkloadInfo &info)

◆ CreatePooling2d()

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

Reimplemented from IWorkloadFactory.

Definition at line 529 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreatePreCompiled()

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

Reimplemented from IWorkloadFactory.

Definition at line 535 of file RefWorkloadFactory.cpp.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

537 {
538  return nullptr;
539 }

◆ CreatePrelu()

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

Reimplemented from IWorkloadFactory.

Definition at line 541 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateQLstm()

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

Reimplemented from IWorkloadFactory.

Definition at line 547 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

549 {
550  return std::make_unique<RefQLstmWorkload>(descriptor, info);
551 }

◆ CreateQuantize()

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

Reimplemented from IWorkloadFactory.

Definition at line 553 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateRank()

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

Reimplemented from IWorkloadFactory.

Definition at line 559 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateReshape()

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

Reimplemented from IWorkloadFactory.

Definition at line 565 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateResize()

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

Reimplemented from IWorkloadFactory.

Definition at line 571 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateResizeBilinear(), and RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateResizeBilinear()

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

Reimplemented from IWorkloadFactory.

Definition at line 577 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

579 {
580  ResizeQueueDescriptor resizeDescriptor;
581  resizeDescriptor.m_Parameters.m_Method = ResizeMethod::Bilinear;
582  resizeDescriptor.m_Parameters.m_DataLayout = descriptor.m_Parameters.m_DataLayout;
583  resizeDescriptor.m_Parameters.m_TargetWidth = descriptor.m_Parameters.m_TargetWidth;
584  resizeDescriptor.m_Parameters.m_TargetHeight = descriptor.m_Parameters.m_TargetHeight;
585 
586  return CreateResize(resizeDescriptor, info);
587 }
std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override

◆ CreateRsqrt()

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

Reimplemented from IWorkloadFactory.

Definition at line 589 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

591 {
592  IgnoreUnused(descriptor);
593  ElementwiseUnaryQueueDescriptor elementwiseUnaryDescriptor;
594  elementwiseUnaryDescriptor.m_Parameters.m_Operation = UnaryOperation::Rsqrt;
595 
596  return CreateElementwiseUnary(elementwiseUnaryDescriptor, info);
597 }
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
void IgnoreUnused(Ts &&...)

◆ CreateSlice()

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

Reimplemented from IWorkloadFactory.

Definition at line 599 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateSoftmax()

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

Reimplemented from IWorkloadFactory.

Definition at line 605 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateSpaceToBatchNd()

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

Reimplemented from IWorkloadFactory.

Definition at line 611 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateSpaceToDepth()

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

Reimplemented from IWorkloadFactory.

Definition at line 617 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateSplitter()

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

Reimplemented from IWorkloadFactory.

Definition at line 623 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateStack()

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

Reimplemented from IWorkloadFactory.

Definition at line 629 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateStridedSlice()

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

Reimplemented from IWorkloadFactory.

Definition at line 635 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateSubTensorHandle()

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

Implements IWorkloadFactory.

Definition at line 47 of file RefWorkloadFactory.hpp.

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

50  {
51  IgnoreUnused(parent, subTensorShape, subTensorOrigin);
52  return nullptr;
53  }
void IgnoreUnused(Ts &&...)

◆ CreateSubtraction()

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

Reimplemented from IWorkloadFactory.

Definition at line 641 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateTensorHandle() [1/2]

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

Implements IWorkloadFactory.

Definition at line 106 of file RefWorkloadFactory.cpp.

References armnn::IgnoreUnused().

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

108 {
109  // For Ref it is okay to make the TensorHandle memory managed as it can also store a pointer
110  // to unmanaged memory. This also ensures memory alignment.
111  IgnoreUnused(isMemoryManaged);
112  return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
113 }
void IgnoreUnused(Ts &&...)

◆ CreateTensorHandle() [2/2]

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

Implements IWorkloadFactory.

Definition at line 115 of file RefWorkloadFactory.cpp.

References armnn::IgnoreUnused().

118 {
119  // For Ref it is okay to make the TensorHandle memory managed as it can also store a pointer
120  // to unmanaged memory. This also ensures memory alignment.
121  IgnoreUnused(isMemoryManaged, dataLayout);
122  return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
123 }
void IgnoreUnused(Ts &&...)

◆ CreateTranspose()

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

Reimplemented from IWorkloadFactory.

Definition at line 654 of file RefWorkloadFactory.cpp.

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

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateTransposeConvolution2d()

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

Reimplemented from IWorkloadFactory.

Definition at line 673 of file RefWorkloadFactory.cpp.

References armnn::info.

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ GetBackendId()

const BackendId & GetBackendId ( ) const
overridevirtual

Implements IWorkloadFactory.

Definition at line 94 of file RefWorkloadFactory.cpp.

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

95 {
96  return s_Id;
97 }

◆ IsLayerSupported()

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

Definition at line 99 of file RefWorkloadFactory.cpp.

References IWorkloadFactory::IsLayerSupported().

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

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

◆ SupportsSubTensors()

bool SupportsSubTensors ( ) const
inlineoverridevirtual

Implements IWorkloadFactory.

Definition at line 44 of file RefWorkloadFactory.hpp.

References ARMNN_DEPRECATED_MSG.

44 { return false; }

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