ArmNN
 22.11
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 
59  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
60  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
61  const bool IsMemoryManaged = true) const = 0;
62 
63  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
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> CreateConvertBf16ToFp32(const ConvertBf16ToFp32QueueDescriptor& 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> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& 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> CreateConvertFp32ToBf16(const ConvertFp32ToBf16QueueDescriptor& 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> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& 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> CreateConvolution2d(const Convolution2dQueueDescriptor& 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> CreateConvolution3d(const Convolution3dQueueDescriptor& 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> CreateDebug(const DebugQueueDescriptor& descriptor,
160  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> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& 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> CreateDepthwiseConvolution2d(
170  const DepthwiseConvolution2dQueueDescriptor& 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> CreateDequantize(const DequantizeQueueDescriptor& 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> CreateDetectionPostProcess(
180  const DetectionPostProcessQueueDescriptor& descriptor, 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> CreateDivision(const DivisionQueueDescriptor& 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> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& 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> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& 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> CreateFill(const FillQueueDescriptor& 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> CreateFloor(const FloorQueueDescriptor& 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> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
210  const WorkloadInfo& info) const;
211 
212  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
213  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
214  virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
215  const WorkloadInfo& info) const;
216 
217  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
218  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
219  virtual std::unique_ptr<IWorkload> CreateInstanceNormalization(
220  const InstanceNormalizationQueueDescriptor& 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> CreateL2Normalization(const L2NormalizationQueueDescriptor& 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> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& 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> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& 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> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& 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> CreateLstm(const LstmQueueDescriptor& 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> CreateMaximum(const MaximumQueueDescriptor& 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> CreateMean(const MeanQueueDescriptor& 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> CreateMemCopy(const MemCopyQueueDescriptor& 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> CreateMemImport(const MemImportQueueDescriptor& 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> CreateMerge(const MergeQueueDescriptor& 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> CreateMinimum(const MinimumQueueDescriptor& 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> CreateMultiplication(const MultiplicationQueueDescriptor& 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> CreateNormalization(const NormalizationQueueDescriptor& 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> CreateOutput(const OutputQueueDescriptor& 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> CreatePad(const PadQueueDescriptor& 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> CreatePermute(const PermuteQueueDescriptor& 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> CreatePooling2d(const Pooling2dQueueDescriptor& 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> CreatePooling3d(const Pooling3dQueueDescriptor& 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> CreatePreCompiled(const PreCompiledQueueDescriptor& 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> CreatePrelu(const PreluQueueDescriptor& 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> CreateQuantize(const QuantizeQueueDescriptor& 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> CreateQLstm(const QLstmQueueDescriptor& 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> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& 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> CreateRank(const RankQueueDescriptor& 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> CreateReduce(const ReduceQueueDescriptor& 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> CreateReshape(const ReshapeQueueDescriptor& 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> CreateResize(const ResizeQueueDescriptor& 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> CreateShape(const ShapeQueueDescriptor& 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> CreateSlice(const SliceQueueDescriptor& 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> CreateSoftmax(const SoftmaxQueueDescriptor& 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> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& 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> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& 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> CreateSubtraction(const SubtractionQueueDescriptor& 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> CreateSplitter(const SplitterQueueDescriptor& 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> CreateStack(const StackQueueDescriptor& 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> CreateStridedSlice(const StridedSliceQueueDescriptor& 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> CreateSwitch(const SwitchQueueDescriptor& descriptor,
406  const WorkloadInfo& Info) const;
407 
408  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
409  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
410  virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
411  const WorkloadInfo& info) const;
412 
413  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
414  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
415  virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d(
416  const TransposeConvolution2dQueueDescriptor& descriptor,
417  const WorkloadInfo& info) const;
418 
419  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
420  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
421  virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
423  const WorkloadInfo& info) const;
424 
425 private:
426  static bool IsLayerConfigurationSupported(const BackendId& backendId,
427  const IConnectableLayer& connectableLayer,
428  Optional<DataType> dataType,
429  std::string& outReasonIfUnsupported,
430  const ModelOptions& modelOptions = {});
431 };
432 
433 } // namespace armnn
virtual const BackendId & GetBackendId() const =0
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:68
DataLayout
Definition: Types.hpp:62
std::vector< BackendOptions > ModelOptions
virtual std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const =0
Copyright (c) 2021 ARM Limited and Contributors.
virtual void AfterWorkloadsCreated()
static bool IsLayerSupported(const BackendId &backendId, const IConnectableLayer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
#define ARMNN_DEPRECATED_MSG_REMOVAL_DATE(message, removed_in_release)
Definition: Deprecated.hpp:44
Contains information about TensorInfos of a layer.
#define ARMNN_DEPRECATED_MSG(message)
Definition: Deprecated.hpp:43
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
Depthwise Convolution 2D layer workload data.
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below...
Definition: Types.hpp:468
virtual bool SupportsSubTensors() const =0