ArmNN
 20.11
WorkloadFactoryBase.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "WorkloadFactory.hpp"
9 
10 namespace armnn
11 {
12 
14 {
15 public:
16  bool SupportsSubTensors() const override
17  { return false; };
18 
19  std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& /*parent*/,
20  TensorShape const& /*subTensorShape*/,
21  unsigned int const */*subTensorOrigin*/) const override
22  { return nullptr; };
23 
24  std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/,
25  const WorkloadInfo& /*info*/) const override
26  { return nullptr; }
27 
28  std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
29  const bool /*IsMemoryManaged*/) const override
30  { return nullptr; }
31 
32  std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
33  DataLayout /*dataLayout*/,
34  const bool /*IsMemoryManaged*/) const override
35  { return nullptr; }
36 
37  std::unique_ptr<IWorkload> CreateAbs(const AbsQueueDescriptor& /*descriptor*/,
38  const WorkloadInfo& /*info*/) const override
39  { return nullptr; }
40 
41  std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
42  const WorkloadInfo& /*info*/) const override
43  { return nullptr; }
44 
45  std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
46  const WorkloadInfo& /*info*/) const override
47  { return nullptr; }
48 
49  std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
50  const WorkloadInfo& /*info*/) const override
51  { return nullptr; }
52 
53  std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/,
54  const WorkloadInfo& /*info*/) const override
55  { return nullptr; }
56 
57  std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/,
58  const WorkloadInfo& /*info*/) const override
59  { return nullptr; }
60 
61  std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
62  const WorkloadInfo& /*info*/) const override
63  { return nullptr; }
64 
65  std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
66  const WorkloadInfo& /*info*/) const override
67  { return nullptr; }
68 
69  std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
70  const WorkloadInfo& /*info*/) const override
71  { return nullptr; }
72 
73  std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/,
74  const WorkloadInfo& /*info*/) const override
75  { return nullptr; }
76 
77  std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/,
78  const WorkloadInfo& /*info*/) const override
79  { return nullptr; }
80 
81  std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
82  const WorkloadInfo& /*info*/) const override
83  { return nullptr; }
84 
85  std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
86  const WorkloadInfo& /*info*/) const override
87  { return nullptr; }
88 
89  std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
90  const WorkloadInfo& /*info*/) const override
91  { return nullptr; }
92 
93  std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/,
94  const WorkloadInfo& /*info*/) const override
95  { return nullptr; }
96 
97  std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/,
98  const WorkloadInfo& /*info*/) const override
99  { return nullptr; }
100 
101  std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/,
102  const WorkloadInfo& /*info*/) const override
103  { return nullptr; }
104 
105  std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
106  const WorkloadInfo& /*info*/) const override
107  { return nullptr; }
108 
109  std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
110  const WorkloadInfo& info) const override
111  {
112  if (descriptor.m_Parameters.m_Operation == UnaryOperation::Abs)
113  {
114  AbsQueueDescriptor absDescriptor;
115  return CreateAbs(absDescriptor, info);
116  }
117  else if (descriptor.m_Parameters.m_Operation == UnaryOperation::Rsqrt)
118  {
119  RsqrtQueueDescriptor rsqrtDescriptor;
120  return CreateRsqrt(rsqrtDescriptor, info);
121  }
122  else if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
123  {
124  return CreateLogicalUnary(descriptor, info);
125  }
126  return nullptr;
127  }
128 
129  std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/,
130  const WorkloadInfo& /*info*/) const override
131  { return nullptr; }
132 
133  std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
134  const WorkloadInfo& /*info*/) const override
135  { return nullptr; }
136 
137  std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
138  const WorkloadInfo& /*info*/) const override
139  { return nullptr; }
140 
141  std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/,
142  const WorkloadInfo& /*info*/) const override
143  { return nullptr; }
144 
145  std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/,
146  const WorkloadInfo& /*info*/) const override
147  { return nullptr; }
148 
149  std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/,
150  const WorkloadInfo& /*info*/) const override
151  { return nullptr; }
152 
153  std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
154  const WorkloadInfo& /*info*/) const override
155  { return nullptr; }
156 
157  std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
158  const WorkloadInfo& /*info*/) const override
159  { return nullptr; }
160 
161  std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
162  const WorkloadInfo& /*info*/) const override
163  { return nullptr; }
164 
165  std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/,
166  const WorkloadInfo& /*info*/) const override
167  { return nullptr; }
168 
169  std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
170  const WorkloadInfo& /*info*/) const override
171  { return nullptr; }
172 
173  std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
174  const WorkloadInfo& /*info*/) const override
175  { return nullptr; }
176 
177  std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
178  const WorkloadInfo& /*info*/) const override
179  { return nullptr; }
180 
181  std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
182  const WorkloadInfo& /*info*/) const override
183  { return nullptr; }
184 
185  std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
186  const WorkloadInfo& /*info*/) const override
187  { return nullptr; }
188 
189  std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
190  const WorkloadInfo& /*info*/) const override
191  { return nullptr; }
192 
193  std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
194  const WorkloadInfo& /*info*/) const override
195  { return nullptr; }
196 
197  std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/,
198  const WorkloadInfo& /*info*/) const override
199  { return nullptr; }
200 
201  std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
202  const WorkloadInfo& /*info*/) const override
203  { return nullptr; }
204 
205  std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
206  const WorkloadInfo& /*info*/) const override
207  { return nullptr; }
208 
209  std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
210  const WorkloadInfo& /*info*/) const override
211  { return nullptr; }
212 
213  std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/,
214  const WorkloadInfo& /*info*/) const override
215  { return nullptr; }
216 
217  std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
218  const WorkloadInfo& /*info*/) const override
219  { return nullptr; }
220 
221  std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
222  const WorkloadInfo& /*info*/) const override
223  { return nullptr; }
224 
225  std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/,
226  const WorkloadInfo& /*info*/) const override
227  { return nullptr; }
228 
229  std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
230  const WorkloadInfo& /*info*/) const override
231  { return nullptr; }
232 
233  std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
234  const WorkloadInfo& /*info*/) const override
235  { return nullptr; }
236 
237  std::unique_ptr<IWorkload> CreateRsqrt(const RsqrtQueueDescriptor& /*descriptor*/,
238  const WorkloadInfo& /*info*/) const override
239  { return nullptr; }
240 
241  std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
242  const WorkloadInfo& /*info*/) const override
243  { return nullptr; }
244 
245  std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
246  const WorkloadInfo& /*info*/) const override
247  { return nullptr; }
248 
249  std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
250  const WorkloadInfo& /*info*/) const override
251  { return nullptr; }
252 
253  std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
254  const WorkloadInfo& /*info*/) const override
255  { return nullptr; }
256 
257  std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
258  const WorkloadInfo& /*info*/) const override
259  { return nullptr; }
260 
261  std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
262  const WorkloadInfo& /*info*/) const override
263  { return nullptr; }
264 
265  std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/,
266  const WorkloadInfo& /*info*/) const override
267  { return nullptr; }
268 
269  std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
270  const WorkloadInfo& /*info*/) const override
271  { return nullptr; }
272 
273  std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
274  const WorkloadInfo& /*info*/) const override
275  { return nullptr; }
276 
277  std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
278  const WorkloadInfo& /*info*/) const override
279  { return nullptr; }
280 
281  std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
282  const WorkloadInfo& /*info*/) const override
283  { return nullptr; }
284 };
285 
286 } //namespace armnn
std::unique_ptr< IWorkload > CreateSubtraction(const SubtractionQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &, const bool) const override
std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &, TensorShape const &, unsigned int const *) const override
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
UnaryOperation m_Operation
Specifies the elementwiseUnary operation to execute.
std::unique_ptr< IWorkload > CreateStridedSlice(const StridedSliceQueueDescriptor &, const WorkloadInfo &) const override
DataLayout
Definition: Types.hpp:50
std::unique_ptr< IWorkload > CreateInput(const InputQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateL2Normalization(const L2NormalizationQueueDescriptor &, const WorkloadInfo &) const override
virtual std::unique_ptr< IWorkload > CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &Info) const
std::unique_ptr< IWorkload > CreateBatchNormalization(const BatchNormalizationQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &, DataLayout, const bool) const override
std::unique_ptr< IWorkload > CreateSoftmax(const SoftmaxQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePooling2d(const Pooling2dQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMerge(const MergeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMean(const MeanQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePad(const PadQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateLstm(const LstmQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateDepthToSpace(const DepthToSpaceQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateLogSoftmax(const LogSoftmaxQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateComparison(const ComparisonQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateTranspose(const TransposeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateRsqrt(const RsqrtQueueDescriptor &, const WorkloadInfo &) const override
Copyright (c) 2020 ARM Limited.
std::unique_ptr< IWorkload > CreateDequantize(const DequantizeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSplitter(const SplitterQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateNormalization(const NormalizationQueueDescriptor &, const WorkloadInfo &) const override
bool SupportsSubTensors() const override
std::unique_ptr< IWorkload > CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSpaceToDepth(const SpaceToDepthQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateConcat(const ConcatQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePrelu(const PreluQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateArgMinMax(const ArgMinMaxQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePermute(const PermuteQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateDebug(const DebugQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateConstant(const ConstantQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateConvolution2d(const Convolution2dQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateFullyConnected(const FullyConnectedQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMinimum(const MinimumQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSwitch(const SwitchQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateReshape(const ReshapeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateFloor(const FloorQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateRank(const RankQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateQuantize(const QuantizeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateAddition(const AdditionQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateGather(const GatherQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateDivision(const DivisionQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePreCompiled(const PreCompiledQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateStack(const StackQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateOutput(const OutputQueueDescriptor &, const WorkloadInfo &) const override
Contains information about inputs and outputs to a layer.
std::unique_ptr< IWorkload > CreateResize(const ResizeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSlice(const SliceQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMultiplication(const MultiplicationQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMaximum(const MaximumQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateActivation(const ActivationQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateAbs(const AbsQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMemImport(const MemImportQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateFakeQuantization(const FakeQuantizationQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateMemCopy(const MemCopyQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateQuantizedLstm(const QuantizedLstmQueueDescriptor &, const WorkloadInfo &) const override