ArmNN
 23.05
WorkloadFactory.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "ITensorHandle.hpp"
8 #include "Workload.hpp"
9 
10 #include <armnn/Optional.hpp>
11 #include <armnn/INetwork.hpp>
12 #include <armnn/TensorFwd.hpp>
13 
14 #include <memory>
15 
16 namespace armnn
17 {
18 
19 class Layer;
20 
21 // Workload factory interface for compute backends.
23 {
24 public:
25  virtual ~IWorkloadFactory() { }
26 
27  virtual void AfterWorkloadsCreated() {};
28 
29  virtual const BackendId& GetBackendId() const = 0;
30 
31  static bool IsLayerSupported(const BackendId& backendId,
32  const IConnectableLayer& layer,
33  Optional<DataType> dataType,
34  std::string& outReasonIfUnsupported);
35 
36  static bool IsLayerSupported(const IConnectableLayer& layer,
37  Optional<DataType> dataType,
38  std::string& outReasonIfUnsupported);
39 
40  static bool IsLayerSupported(const IConnectableLayer& layer,
41  Optional<DataType> dataType,
42  std::string& outReasonIfUnsupported,
43  const ModelOptions& modelOptions);
44 
45  static bool IsLayerSupported(const BackendId& backendId,
46  const IConnectableLayer& layer,
47  Optional<DataType> dataType,
48  std::string& outReasonIfUnsupported,
49  const ModelOptions& modelOptions);
50 
51  virtual bool SupportsSubTensors() const = 0;
52 
53  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead")
54  virtual std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
55  TensorShape const& subTensorShape,
56  unsigned int const* subTensorOrigin
57  ) const = 0;
58 
60  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
61  const bool IsMemoryManaged = true) const = 0;
62 
64  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
65  DataLayout dataLayout,
66  const bool IsMemoryManaged = true) const = 0;
67 
68  virtual std::unique_ptr<IWorkload> CreateWorkload(LayerType type,
69  const QueueDescriptor& descriptor,
70  const WorkloadInfo& info) const;
71 
72  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
73  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
74  virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
75  const WorkloadInfo& info) const;
76 
77  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
78  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
79  virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
80  const WorkloadInfo& info) const;
81 
82  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
83  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
84  virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
85  const WorkloadInfo& info) const;
86 
87  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
88  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
89  virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
90  const WorkloadInfo& info) const;
91 
92  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
93  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
94  virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
95  const WorkloadInfo& info) const;
96 
97  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
98  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
99  virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
100  const WorkloadInfo& Info) const;
101 
102  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
103  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
104  virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
105  const WorkloadInfo& Info) const;
106 
107  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
108  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
109  virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
110  const WorkloadInfo& info) const;
111 
112  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
113  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
114  virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
115  const WorkloadInfo& Info) const;
116 
117  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
118  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
119  virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
120  const WorkloadInfo& info) const;
121 
122  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
123  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
124  virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
125  const WorkloadInfo& info) const;
126 
127  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
128  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
129  virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
130  const WorkloadInfo& info) const;
131 
132  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
133  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
134  virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
135  const WorkloadInfo& info) const;
136 
137  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
138  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
139  virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
140  const WorkloadInfo& info) const;
141 
142  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
143  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
144  virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
145  const WorkloadInfo& info) const;
146 
147  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
148  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
149  virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
150  const WorkloadInfo& info) const;
151 
152  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
153  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
154  virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
155  const WorkloadInfo& info) const;
156 
157  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
158  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
159  virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(
160  const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const;
161 
162  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
163  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
164  virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
165  const WorkloadInfo& info) const;
166 
167  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
168  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
169  virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess(
170  const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const;
171 
172  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
173  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
174  virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
175  const WorkloadInfo& info) const;
176 
177  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
178  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
179  virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
180  const WorkloadInfo& Info) const;
181 
182  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
183  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
184  virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
185  const WorkloadInfo& info) const;
186 
187  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
188  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
189  virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
190  const WorkloadInfo& info) const;
191 
192  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
193  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
194  virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
195  const WorkloadInfo& info) const;
196 
197  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
198  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
199  virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
200  const WorkloadInfo& info) const;
201 
202  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
203  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
204  virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
205  const WorkloadInfo& info) const;
206 
207  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
208  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
209  virtual std::unique_ptr<IWorkload> CreateInstanceNormalization(
210  const InstanceNormalizationQueueDescriptor& descriptor,
211  const WorkloadInfo& info) const;
212 
213  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
214  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
215  virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
216  const WorkloadInfo& info) const;
217 
218  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
219  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
220  virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
221  const WorkloadInfo& Info) const;
222 
223  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
224  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
225  virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
226  const WorkloadInfo& Info) const;
227 
228  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
229  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
230  virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
231  const WorkloadInfo& info) const;
232 
233  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
234  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
235  virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
236  const WorkloadInfo& info) const;
237 
238  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
239  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
240  virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
241  const WorkloadInfo& info) const;
242 
243  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
244  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
245  virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
246  const WorkloadInfo& Info) const;
247 
248  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
249  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
250  virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
251  const WorkloadInfo& info) const;
252 
253  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
254  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
255  virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
256  const WorkloadInfo& info) const;
257 
258  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
259  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
260  virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor,
261  const WorkloadInfo& info) const;
262 
263  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
264  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
265  virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
266  const WorkloadInfo& info) const;
267 
268  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
269  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
270  virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
271  const WorkloadInfo& info) const;
272 
273  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
274  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
275  virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
276  const WorkloadInfo& info) const;
277 
278  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
279  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
280  virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
281  const WorkloadInfo& info) const;
282 
283  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
284  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
285  virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
286  const WorkloadInfo& Info) const;
287 
288  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
289  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
290  virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
291  const WorkloadInfo& info) const;
292 
293  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
294  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
295  virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
296  const WorkloadInfo& info) const;
297 
298  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
299  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
300  virtual std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor,
301  const WorkloadInfo& info) const;
302 
303  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
304  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
305  virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
306  const WorkloadInfo& info) const;
307 
308  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
309  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
310  virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
311  const WorkloadInfo& info) const;
312 
313  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
314  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
315  virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
316  const WorkloadInfo& Info) const;
317 
318  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
319  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
320  virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
321  const WorkloadInfo& info) const;
322 
323  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
324  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
325  virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
326  const WorkloadInfo& info) const;
327 
328  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
329  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
330  virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
331  const WorkloadInfo& info) const;
332 
333  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
334  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
335  virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
336  const WorkloadInfo& info) const;
337 
338  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
339  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
340  virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
341  const WorkloadInfo& info) const;
342 
343  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
344  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
345  virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
346  const WorkloadInfo& info) const;
347 
348  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
349  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
350  virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor,
351  const WorkloadInfo& info) const;
352 
353  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
354  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
355  virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
356  const WorkloadInfo& info) const;
357 
358  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
359  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
360  virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
361  const WorkloadInfo& info) const;
362 
363  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
364  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
365  virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
366  const WorkloadInfo& info) const;
367 
368  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
369  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
370  virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
371  const WorkloadInfo& info) const;
372 
373  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
374  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
375  virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
376  const WorkloadInfo& info) const;
377 
378  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
379  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
380  virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
381  const WorkloadInfo& info) const;
382 
383  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
384  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
385  virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
386  const WorkloadInfo& info) const;
387 
388  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
389  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
390  virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
391  const WorkloadInfo& Info) const;
392 
393  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
394  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
395  virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor,
396  const WorkloadInfo& Info) const;
397 
398  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
399  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
400  virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
401  const WorkloadInfo& info) const;
402 
403  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
404  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
405  virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d(
406  const TransposeConvolution2dQueueDescriptor& descriptor,
407  const WorkloadInfo& info) const;
408 
409  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
410  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
411  virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
413  const WorkloadInfo& info) const;
414 
415 private:
416  static bool IsLayerConfigurationSupported(const BackendId& backendId,
417  const IConnectableLayer& connectableLayer,
418  Optional<DataType> dataType,
419  std::string& outReasonIfUnsupported,
420  const ModelOptions& modelOptions = {});
421 };
422 
423 } // namespace armnn
armnn::MinimumQueueDescriptor
Definition: WorkloadData.hpp:468
armnn::BackendId
Definition: BackendId.hpp:75
armnn::QuantizedLstmQueueDescriptor
Definition: WorkloadData.hpp:609
armnn::L2NormalizationQueueDescriptor
Definition: WorkloadData.hpp:353
armnn::IWorkloadFactory::CreateSubTensorHandle
virtual std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const =0
armnn::ComparisonQueueDescriptor
Definition: WorkloadData.hpp:661
armnn::SliceQueueDescriptor
Definition: WorkloadData.hpp:651
armnn::PadQueueDescriptor
Definition: WorkloadData.hpp:289
armnn::ShapeQueueDescriptor
Definition: WorkloadData.hpp:686
armnn::DataLayout
DataLayout
Definition: Types.hpp:62
armnn::DivisionQueueDescriptor
Definition: WorkloadData.hpp:265
armnn::PermuteQueueDescriptor
Definition: WorkloadData.hpp:186
armnn::MergeQueueDescriptor
Definition: WorkloadData.hpp:524
armnn::NormalizationQueueDescriptor
Definition: WorkloadData.hpp:247
armnn::DequantizeQueueDescriptor
Definition: WorkloadData.hpp:519
armnn::MemCopyQueueDescriptor
Definition: WorkloadData.hpp:86
armnn::IConnectableLayer
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:68
Optional.hpp
armnn::GatherQueueDescriptor
Definition: WorkloadData.hpp:502
armnn::IWorkloadFactory::SupportsSubTensors
virtual bool SupportsSubTensors() const =0
armnn::DetectionPostProcessQueueDescriptor
Definition: WorkloadData.hpp:234
armnn::IWorkloadFactory::GetBackendId
virtual const BackendId & GetBackendId() const =0
armnn::AdditionQueueDescriptor
Definition: WorkloadData.hpp:253
armnn::DepthwiseConvolution2dQueueDescriptor
Depthwise Convolution 2D layer workload data.
Definition: WorkloadData.hpp:229
armnn::ConstantQueueDescriptor
Definition: WorkloadData.hpp:363
armnn::ConvertFp32ToFp16QueueDescriptor
Definition: WorkloadData.hpp:452
armnn::ModelOptions
std::vector< BackendOptions > ModelOptions
Definition: BackendOptions.hpp:18
armnn::IWorkloadFactory::~IWorkloadFactory
virtual ~IWorkloadFactory()
Definition: WorkloadFactory.hpp:25
Workload.hpp
ARMNN_DEPRECATED_MSG_REMOVAL_DATE
#define ARMNN_DEPRECATED_MSG_REMOVAL_DATE(message, removed_in_release)
Definition: Deprecated.hpp:44
armnn::DepthToSpaceQueueDescriptor
Definition: WorkloadData.hpp:656
armnn::IWorkloadFactory
Definition: WorkloadFactory.hpp:22
ARMNN_DEPRECATED_MSG
#define ARMNN_DEPRECATED_MSG(message)
Definition: Deprecated.hpp:43
TensorFwd.hpp
armnn::FloorQueueDescriptor
Definition: WorkloadData.hpp:390
armnn::QLstmQueueDescriptor
Definition: WorkloadData.hpp:557
INetwork.hpp
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition: 01_00_quick_start.dox:6
armnn::Pooling3dQueueDescriptor
Definition: WorkloadData.hpp:198
armnn::ElementwiseUnaryQueueDescriptor
Definition: WorkloadData.hpp:671
armnn::UnidirectionalSequenceLstmQueueDescriptor
Definition: WorkloadData.hpp:691
armnn::ITensorHandle
Definition: ITensorHandle.hpp:15
armnn::FillQueueDescriptor
Definition: WorkloadData.hpp:174
armnn::BatchNormalizationQueueDescriptor
Definition: WorkloadData.hpp:306
armnn::Convolution3dQueueDescriptor
Definition: WorkloadData.hpp:211
armnn::ChannelShuffleQueueDescriptor
Definition: WorkloadData.hpp:743
armnn::TensorShape
Definition: Tensor.hpp:20
armnn::ArgMinMaxQueueDescriptor
Definition: WorkloadData.hpp:163
armnn::FullyConnectedQueueDescriptor
Definition: WorkloadData.hpp:180
armnn::LayerType
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below.
Definition: Types.hpp:479
armnn::MultiplicationQueueDescriptor
Definition: WorkloadData.hpp:259
armnn::LstmQueueDescriptor
Definition: WorkloadData.hpp:395
armnn::ResizeQueueDescriptor
Definition: WorkloadData.hpp:329
armnn::IWorkloadFactory::CreateTensorHandle
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
armnn::TransposeConvolution2dQueueDescriptor
Definition: WorkloadData.hpp:539
armnn::RankQueueDescriptor
Definition: WorkloadData.hpp:324
armnn::PreluQueueDescriptor
Definition: WorkloadData.hpp:534
armnn::IWorkloadFactory::IsLayerSupported
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
Definition: WorkloadFactory.cpp:1548
armnn::SwitchQueueDescriptor
Definition: WorkloadData.hpp:529
armnn::ConcatQueueDescriptor
Definition: WorkloadData.hpp:130
armnn::QueueDescriptor
Definition: WorkloadData.hpp:24
armnn::TensorInfo
Definition: Tensor.hpp:152
armnn::StackQueueDescriptor
Definition: WorkloadData.hpp:152
armnn::IWorkloadFactory::AfterWorkloadsCreated
virtual void AfterWorkloadsCreated()
Definition: WorkloadFactory.hpp:27
armnn::ReduceQueueDescriptor
Definition: WorkloadData.hpp:681
armnn::PreCompiledQueueDescriptor
Definition: WorkloadData.hpp:507
armnn::LogSoftmaxQueueDescriptor
Definition: WorkloadData.hpp:358
armnn::ConvertFp16ToFp32QueueDescriptor
Definition: WorkloadData.hpp:447
armnn::QuantizeQueueDescriptor
Definition: WorkloadData.hpp:294
armnn::SpaceToBatchNdQueueDescriptor
Definition: WorkloadData.hpp:380
armnn::ReshapeQueueDescriptor
Definition: WorkloadData.hpp:375
armnn::MemImportQueueDescriptor
Definition: WorkloadData.hpp:94
armnn::WorkloadInfo
Contains information about TensorInfos of a layer.
Definition: WorkloadInfo.hpp:16
armnn::IWorkload
Workload interface to enqueue a layer computation.
Definition: IWorkload.hpp:23
armnn::SplitterQueueDescriptor
Definition: WorkloadData.hpp:111
armnn::DataType
DataType
Definition: Types.hpp:48
armnn::DebugQueueDescriptor
Definition: WorkloadData.hpp:479
armnn::ITensorHandleFactory
Definition: ITensorHandleFactory.hpp:46
armnn::SpaceToDepthQueueDescriptor
Definition: WorkloadData.hpp:385
armnn::BatchToSpaceNdQueueDescriptor
Definition: WorkloadData.hpp:457
armnn::StridedSliceQueueDescriptor
Definition: WorkloadData.hpp:462
armnn::Convolution2dQueueDescriptor
Definition: WorkloadData.hpp:205
ITensorHandle.hpp
armnn::Optional
Definition: Optional.hpp:270
armnn::IWorkloadFactory::CreateWorkload
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
Definition: WorkloadFactory.cpp:1590
armnn::SubtractionQueueDescriptor
Definition: WorkloadData.hpp:271
armnn::ActivationQueueDescriptor
Definition: WorkloadData.hpp:158
armnn::Pooling2dQueueDescriptor
Definition: WorkloadData.hpp:192
armnn::LogicalBinaryQueueDescriptor
Definition: WorkloadData.hpp:676
armnn::CastQueueDescriptor
Definition: WorkloadData.hpp:168
armnn::SoftmaxQueueDescriptor
Definition: WorkloadData.hpp:105
armnn::MaximumQueueDescriptor
Definition: WorkloadData.hpp:277
armnn::TransposeQueueDescriptor
Definition: WorkloadData.hpp:552
std
Definition: BackendId.hpp:149
armnn::MeanQueueDescriptor
Definition: WorkloadData.hpp:283
armnn::FakeQuantizationQueueDescriptor
Definition: WorkloadData.hpp:334
armnn::InstanceNormalizationQueueDescriptor
Definition: WorkloadData.hpp:348