From 6940dd720ebb6b3d1df8ca203ab696daefe58189 Mon Sep 17 00:00:00 2001 From: Jim Flynn Date: Fri, 20 Mar 2020 12:25:56 +0000 Subject: renamed Documentation folder 20.02 and added .nojekyll file Signed-off-by: Jim Flynn --- 20.02/classarmnn_1_1_ref_workload_factory.xhtml | 3309 +++++++++++++++++++++++ 1 file changed, 3309 insertions(+) create mode 100644 20.02/classarmnn_1_1_ref_workload_factory.xhtml (limited to '20.02/classarmnn_1_1_ref_workload_factory.xhtml') diff --git a/20.02/classarmnn_1_1_ref_workload_factory.xhtml b/20.02/classarmnn_1_1_ref_workload_factory.xhtml new file mode 100644 index 0000000000..9cab100bc6 --- /dev/null +++ b/20.02/classarmnn_1_1_ref_workload_factory.xhtml @@ -0,0 +1,3309 @@ + + + + + + + + + + + + + +ArmNN: RefWorkloadFactory Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + ArmNN + + + +
+
+  20.02 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
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< IWorkloadCreateConvertFp16ToFp32 (const ConvertFp16ToFp32QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvertFp32ToFp16 (const ConvertFp32ToFp16QueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateConvolution2d (const Convolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDebug (const DebugQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthToSpace (const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDequantize (const DequantizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDetectionPostProcess (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateDivision (const DivisionQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateElementwiseUnary (const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateEqual (const EqualQueueDescriptor &descriptor, const WorkloadInfo &info) const override
 
std::unique_ptr< IWorkloadCreateFakeQuantization (const FakeQuantizationQueueDescriptor &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< IWorkloadCreateQuantize (const QuantizeQueueDescriptor &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 83 of file RefWorkloadFactory.cpp.

+
84  : m_MemoryManager(memoryManager)
85 {
86 }
+
+
+ +

◆ RefWorkloadFactory() [2/2]

+ +
+
+ + + + + + + +
RefWorkloadFactory ()
+
+ +

Definition at line 88 of file RefWorkloadFactory.cpp.

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

◆ ~RefWorkloadFactory()

+ +
+
+ + + + + +
+ + + + + + + +
~RefWorkloadFactory ()
+
+inline
+
+ +

Definition at line 36 of file RefWorkloadFactory.hpp.

+ +

References RefWorkloadFactory::GetBackendId(), and RefWorkloadFactory::IsLayerSupported().

+
36 {}
+
+
+

Member Function Documentation

+ +

◆ CreateAbs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateAbs (const AbsQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 124 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateActivation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateActivation (const ActivationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 134 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateAddition()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateAddition (const AdditionQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 140 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateArgMinMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateArgMinMax (const ArgMinMaxQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 146 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateBatchNormalization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateBatchNormalization (const BatchNormalizationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 152 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
155 {
156  return std::make_unique<RefBatchNormalizationWorkload>(descriptor, info);
157 }
+
+
+
+ +

◆ CreateBatchToSpaceNd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateBatchToSpaceNd (const BatchToSpaceNdQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 159 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
161 {
162  return std::make_unique<RefBatchToSpaceNdWorkload>(descriptor, info);
163 }
+
+
+
+ +

◆ CreateComparison()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateComparison (const ComparisonQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 165 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

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

+
167 {
168  return std::make_unique<RefComparisonWorkload>(descriptor, info);
169 }
+
+
+
+ +

◆ CreateConcat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateConcat (const ConcatQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 171 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

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

+
173 {
174  return std::make_unique<RefConcatWorkload>(descriptor, info);
175 }
+
+
+
+ +

◆ CreateConstant()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateConstant (const ConstantQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 177 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
179 {
180  return std::make_unique<RefConstantWorkload>(descriptor, info);
181 }
+
+
+
+ +

◆ CreateConvertFp16ToFp32()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateConvertFp16ToFp32 (const ConvertFp16ToFp32QueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 183 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
186 {
187  return std::make_unique<RefConvertFp16ToFp32Workload>(descriptor, info);
188 }
+
+
+
+ +

◆ CreateConvertFp32ToFp16()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateConvertFp32ToFp16 (const ConvertFp32ToFp16QueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 190 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
193 {
194  return std::make_unique<RefConvertFp32ToFp16Workload>(descriptor, info);
195 }
+
+
+
+ +

◆ CreateConvolution2d()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateConvolution2d (const Convolution2dQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 197 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
199 {
200  return std::make_unique<RefConvolution2dWorkload>(descriptor, info);
201 }
+
+
+
+ +

◆ CreateDebug()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateDebug (const DebugQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 203 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().

+
205 {
206  if (IsBFloat16(info))
207  {
208  return std::make_unique<RefDebugBFloat16Workload>(descriptor, info);
209  }
210  if (IsFloat16(info))
211  {
212  return std::make_unique<RefDebugFloat16Workload>(descriptor, info);
213  }
214  if (IsQSymmS16(info))
215  {
216  return std::make_unique<RefDebugQSymmS16Workload>(descriptor, info);
217  }
218  if (IsQSymmS8(info))
219  {
220  return std::make_unique<RefDebugQSymmS8Workload>(descriptor, info);
221  }
222  if (IsQAsymmU8(info))
223  {
224  return std::make_unique<RefDebugQAsymmU8Workload>(descriptor, info);
225  }
226  if (IsQAsymmS8(info))
227  {
228  return std::make_unique<RefDebugQAsymmS8Workload>(descriptor, info);
229  }
230  if (IsSigned32(info))
231  {
232  return std::make_unique<RefDebugSigned32Workload>(descriptor, info);
233  }
234 
235  return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(descriptor, info);
236 }
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 DepthToSpaceQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 238 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
240 {
241  return std::make_unique<RefDepthToSpaceWorkload>(descriptor, info);
242 }
+
+
+
+ +

◆ CreateDepthwiseConvolution2d()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateDepthwiseConvolution2d (const DepthwiseConvolution2dQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 244 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
247 {
248  return std::make_unique<RefDepthwiseConvolution2dWorkload>(descriptor, info);
249 }
+
+
+
+ +

◆ CreateDequantize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateDequantize (const DequantizeQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 251 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
253 {
254  return std::make_unique<RefDequantizeWorkload>(descriptor, info);
255 }
+
+
+
+ +

◆ CreateDetectionPostProcess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateDetectionPostProcess (const DetectionPostProcessQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 257 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
260 {
261  return std::make_unique<RefDetectionPostProcessWorkload>(descriptor, info);
262 }
+
+
+
+ +

◆ CreateDivision()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateDivision (const DivisionQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 264 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
266 {
267  return std::make_unique<RefDivisionWorkload>(descriptor, info);
268 }
+
+
+
+ +

◆ CreateElementwiseUnary()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateElementwiseUnary (const ElementwiseUnaryQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 270 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

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

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

◆ CreateEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateEqual (const EqualQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 276 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
278 {
279  IgnoreUnused(descriptor);
280  ComparisonQueueDescriptor comparisonDescriptor;
281  comparisonDescriptor.m_Parameters.m_Operation = ComparisonOperation::Equal;
282 
283  return CreateComparison(comparisonDescriptor, info);
284 }
+
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
+
void IgnoreUnused(Ts &&...)
+ +
+
+
+ +

◆ CreateFakeQuantization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateFakeQuantization (const FakeQuantizationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 286 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
289 {
290  return MakeWorkload<RefFakeQuantizationFloat32Workload, NullWorkload>(descriptor, info);
291 }
+
+
+
+ +

◆ CreateFloor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateFloor (const FloorQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 293 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
295 {
296  return std::make_unique<RefFloorWorkload>(descriptor, info);
297 }
+
+
+
+ +

◆ CreateFullyConnected()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateFullyConnected (const FullyConnectedQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 299 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateGather()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateGather (const GatherQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 306 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
308 {
309  return std::make_unique<RefGatherWorkload>(descriptor, info);
310 }
+
+
+
+ +

◆ CreateGreater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateGreater (const GreaterQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 312 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
314 {
315  IgnoreUnused(descriptor);
316  ComparisonQueueDescriptor comparisonDescriptor;
317  comparisonDescriptor.m_Parameters.m_Operation = ComparisonOperation::Greater;
318 
319  return CreateComparison(comparisonDescriptor, info);
320 }
+
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &descriptor, const WorkloadInfo &info) const override
+
void IgnoreUnused(Ts &&...)
+ +
+
+
+ +

◆ CreateInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateInput (const InputQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Implements IWorkloadFactory.

+ +

Definition at line 322 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
324 {
325  if (info.m_InputTensorInfos.empty() )
326  {
327  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Input cannot be zero length");
328  }
329  if (info.m_OutputTensorInfos.empty())
330  {
331  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length");
332  }
333 
334  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
335  {
336  throw InvalidArgumentException("RefWorkloadFactory::CreateInput: data input and output differ in byte count.");
337  }
338 
339  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
340 }
+
+
+
+ +

◆ CreateInstanceNormalization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateInstanceNormalization (const InstanceNormalizationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 342 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
345 {
346  return std::make_unique<RefInstanceNormalizationWorkload>(descriptor, info);
347 }
+
+
+
+ +

◆ CreateL2Normalization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateL2Normalization (const L2NormalizationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 349 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
351 {
352  return std::make_unique<RefL2NormalizationWorkload>(descriptor, info);
353 }
+
+
+
+ +

◆ CreateLogSoftmax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateLogSoftmax (const LogSoftmaxQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 355 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
357 {
358  return std::make_unique<RefLogSoftmaxWorkload>(descriptor, info);
359 }
+
+
+
+ +

◆ CreateLstm()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateLstm (const LstmQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 361 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
363 {
364  return std::make_unique<RefLstmWorkload>(descriptor, info);
365 }
+
+
+
+ +

◆ CreateMaximum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMaximum (const MaximumQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 367 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateMean()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMean (const MeanQueueDescriptordescriptor,
const WorkloadInfoInfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 373 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
375 {
376  return std::make_unique<RefMeanWorkload>(descriptor, info);
377 }
+
+
+
+ +

◆ CreateMemCopy()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMemCopy (const MemCopyQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 379 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
381 {
382  if (descriptor.m_Inputs.empty())
383  {
384  throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor.");
385  }
386  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
387 }
+
+
+
+ +

◆ CreateMemImport()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMemImport (const MemImportQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 389 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
391 {
392  if (descriptor.m_Inputs.empty())
393  {
394  throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor.");
395  }
396  return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
397 }
+
+
+
+ +

◆ CreateMerger()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMerger (const MergerQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 399 of file RefWorkloadFactory.cpp.

+ +

References RefWorkloadFactory::CreateConcat().

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
401 {
402  return CreateConcat(descriptor, info);
403 }
std::unique_ptr< IWorkload > CreateConcat(const ConcatQueueDescriptor &descriptor, const WorkloadInfo &info) const override
+ +
+
+
+ +

◆ CreateMinimum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMinimum (const MinimumQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 405 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
407 {
408  return std::make_unique<RefMinimumWorkload>(descriptor, info);
409 }
+
+
+
+ +

◆ CreateMultiplication()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateMultiplication (const MultiplicationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 411 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
413 {
414  return std::make_unique<RefMultiplicationWorkload>(descriptor, info);
415 }
+
+
+
+ +

◆ CreateNormalization()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateNormalization (const NormalizationQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 417 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
419 {
420  return std::make_unique<RefNormalizationWorkload>(descriptor, info);
421 }
+
+
+
+ +

◆ CreateOutput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateOutput (const OutputQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 423 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
425 {
426  if (info.m_InputTensorInfos.empty() )
427  {
428  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Input cannot be zero length");
429  }
430  if (info.m_OutputTensorInfos.empty())
431  {
432  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Output cannot be zero length");
433  }
434  if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
435  {
436  throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output differ in byte count.");
437  }
438 
439  return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
440 }
+
+
+
+ +

◆ CreatePad()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreatePad (const PadQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 442 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
444 {
445  if (IsQSymmS16(info))
446  {
447  return std::make_unique<RefPadQSymm16Workload>(descriptor, info);
448  }
449  else if (IsFloat16(info))
450  {
451  return std::make_unique<RefPadFloat16Workload>(descriptor, info);
452  }
453  else if (IsBFloat16(info))
454  {
455  return std::make_unique<RefPadBFloat16Workload>(descriptor, info);
456  }
457  return MakeWorkload<RefPadFloat32Workload, RefPadQAsymm8Workload>(descriptor, info);
458 }
bool IsBFloat16(const WorkloadInfo &info)
+
bool IsFloat16(const WorkloadInfo &info)
+ +
bool IsQSymmS16(const WorkloadInfo &info)
+
+
+
+ +

◆ CreatePermute()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreatePermute (const PermuteQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 460 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
462 {
463  if (IsQSymmS16(info))
464  {
465  return std::make_unique<RefPermuteQSymm16Workload>(descriptor, info);
466  }
467  else if (IsBFloat16(info))
468  {
469  return std::make_unique<RefPermuteBFloat16Workload>(descriptor, info);
470  }
472  NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
473 }
RefPermuteWorkload< DataType::Float16 > RefPermuteFloat16Workload
+
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 Pooling2dQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 475 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
477 {
478  return std::make_unique<RefPooling2dWorkload>(descriptor, info);
479 }
+
+
+
+ +

◆ CreatePreCompiled()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreatePreCompiled (const PreCompiledQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 481 of file RefWorkloadFactory.cpp.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
483 {
484  return nullptr;
485 }
+
+
+ +

◆ CreatePrelu()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreatePrelu (const PreluQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 487 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
489 {
490  return std::make_unique<RefPreluWorkload>(descriptor, info);
491 }
+
+
+
+ +

◆ CreateQuantize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateQuantize (const QuantizeQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 493 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
495 {
496  return std::make_unique<RefQuantizeWorkload>(descriptor, info);
497 }
+
+
+
+ +

◆ CreateReshape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateReshape (const ReshapeQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 499 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
501 {
502  return std::make_unique<RefReshapeWorkload>(descriptor, info);
503 }
+
+
+
+ +

◆ CreateResize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateResize (const ResizeQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 505 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

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

+
507 {
508  return std::make_unique<RefResizeWorkload>(descriptor, info);
509 }
+
+
+
+ +

◆ CreateResizeBilinear()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateResizeBilinear (const ResizeBilinearQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 511 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().

+
513 {
514  ResizeQueueDescriptor resizeDescriptor;
515  resizeDescriptor.m_Parameters.m_Method = ResizeMethod::Bilinear;
516  resizeDescriptor.m_Parameters.m_DataLayout = descriptor.m_Parameters.m_DataLayout;
517  resizeDescriptor.m_Parameters.m_TargetWidth = descriptor.m_Parameters.m_TargetWidth;
518  resizeDescriptor.m_Parameters.m_TargetHeight = descriptor.m_Parameters.m_TargetHeight;
519 
520  return CreateResize(resizeDescriptor, info);
521 }
std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &descriptor, const WorkloadInfo &info) const override
+ + +
+
+
+ +

◆ CreateRsqrt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateRsqrt (const RsqrtQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 523 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
525 {
526  IgnoreUnused(descriptor);
527  ElementwiseUnaryQueueDescriptor elementwiseUnaryDescriptor;
528  elementwiseUnaryDescriptor.m_Parameters.m_Operation = UnaryOperation::Rsqrt;
529 
530  return CreateElementwiseUnary(elementwiseUnaryDescriptor, info);
531 }
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
+
void IgnoreUnused(Ts &&...)
+ + +
+
+
+ +

◆ CreateSlice()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSlice (const SliceQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 533 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
535 {
536  return std::make_unique<RefSliceWorkload>(descriptor, info);
537 }
+
+
+
+ +

◆ CreateSoftmax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSoftmax (const SoftmaxQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 539 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
541 {
542  return std::make_unique<RefSoftmaxWorkload>(descriptor, info);
543 }
+
+
+
+ +

◆ CreateSpaceToBatchNd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSpaceToBatchNd (const SpaceToBatchNdQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 545 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
547 {
548  return std::make_unique<RefSpaceToBatchNdWorkload>(descriptor, info);
549 }
+
+
+
+ +

◆ CreateSpaceToDepth()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSpaceToDepth (const SpaceToDepthQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 551 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
553 {
554  return std::make_unique<RefSpaceToDepthWorkload>(descriptor, info);
555 }
+
+
+
+ +

◆ CreateSplitter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSplitter (const SplitterQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 557 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
559 {
560  return std::make_unique<RefSplitterWorkload>(descriptor, info);
561 }
+
+
+
+ +

◆ CreateStack()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateStack (const StackQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 563 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
565 {
566  return std::make_unique<RefStackWorkload>(descriptor, info);
567 }
+
+
+
+ +

◆ CreateStridedSlice()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateStridedSlice (const StridedSliceQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 569 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
571 {
572  return std::make_unique<RefStridedSliceWorkload>(descriptor, info);
573 }
+
+
+
+ +

◆ CreateSubTensorHandle()

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

Implements IWorkloadFactory.

+ +

Definition at line 46 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::CreateConvertFp16ToFp32(), RefWorkloadFactory::CreateConvertFp32ToFp16(), RefWorkloadFactory::CreateConvolution2d(), RefWorkloadFactory::CreateDebug(), RefWorkloadFactory::CreateDepthToSpace(), RefWorkloadFactory::CreateDepthwiseConvolution2d(), RefWorkloadFactory::CreateDequantize(), RefWorkloadFactory::CreateDetectionPostProcess(), RefWorkloadFactory::CreateDivision(), RefWorkloadFactory::CreateElementwiseUnary(), RefWorkloadFactory::CreateEqual(), RefWorkloadFactory::CreateFakeQuantization(), 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::CreateQuantize(), 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.

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

◆ CreateSubtraction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateSubtraction (const SubtractionQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 575 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
577 {
578  return std::make_unique<RefSubtractionWorkload>(descriptor, info);
579 }
+
+
+
+ +

◆ CreateTensorHandle() [1/2]

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

Implements IWorkloadFactory.

+ +

Definition at line 105 of file RefWorkloadFactory.cpp.

+ +

References armnn::IgnoreUnused().

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

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

◆ CreateTensorHandle() [2/2]

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

Implements IWorkloadFactory.

+ +

Definition at line 114 of file RefWorkloadFactory.cpp.

+ +

References armnn::IgnoreUnused().

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

◆ CreateTranspose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::unique_ptr< IWorkload > CreateTranspose (const TransposeQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 581 of file RefWorkloadFactory.cpp.

+ +

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

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
583 {
584  if (IsQSymmS16(info))
585  {
586  return std::make_unique<RefTransposeQSymm16Workload>(descriptor, info);
587  }
588  else if (IsBFloat16(info))
589  {
590  return std::make_unique<RefTransposeBFloat16Workload>(descriptor, info);
591  }
593  NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
594 }
RefTransposeWorkload< DataType::Float16 > RefTransposeFloat16Workload
+
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 TransposeConvolution2dQueueDescriptordescriptor,
const WorkloadInfoinfo 
) const
+
+overridevirtual
+
+ +

Reimplemented from IWorkloadFactory.

+ +

Definition at line 596 of file RefWorkloadFactory.cpp.

+ +

References armnn::info.

+ +

Referenced by RefWorkloadFactory::CreateSubTensorHandle().

+
599 {
600  return std::make_unique<RefTransposeConvolution2dWorkload>(descriptor, info);
601 }
+
+
+
+ +

◆ GetBackendId()

+ +
+
+ + + + + +
+ + + + + + + +
const BackendId & GetBackendId () const
+
+overridevirtual
+
+ +

Implements IWorkloadFactory.

+ +

Definition at line 93 of file RefWorkloadFactory.cpp.

+ +

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

+
94 {
95  return s_Id;
96 }
+
+
+ +

◆ IsLayerSupported()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool IsLayerSupported (const Layerlayer,
Optional< DataTypedataType,
std::string & outReasonIfUnsupported 
)
+
+static
+
+ +

Definition at line 98 of file RefWorkloadFactory.cpp.

+ +

References IWorkloadFactory::IsLayerSupported().

+ +

Referenced by RefWorkloadFactory::~RefWorkloadFactory().

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

◆ SupportsSubTensors()

+ +
+
+ + + + + +
+ + + + + + + +
bool SupportsSubTensors () const
+
+inlineoverridevirtual
+
+ +

Implements IWorkloadFactory.

+ +

Definition at line 44 of file RefWorkloadFactory.hpp.

+
44 { return false; }
+
+
+
The documentation for this class was generated from the following files: +
+
+ + + + -- cgit v1.2.1