ArmNN
 22.05.01
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  virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
60  const WorkloadInfo& info) const = 0;
61 
62  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
63  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
64  const bool IsMemoryManaged = true) const = 0;
65 
66  ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead")
67  virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
68  DataLayout dataLayout,
69  const bool IsMemoryManaged = true) const = 0;
70 
71  virtual std::unique_ptr<IWorkload> CreateWorkload(LayerType type,
72  const QueueDescriptor& descriptor,
73  const WorkloadInfo& info) const;
74 
75  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
76  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
77  virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
78  const WorkloadInfo& info) const;
79 
80  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
81  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
82  virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
83  const WorkloadInfo& info) const;
84 
85  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
86  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
87  virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
88  const WorkloadInfo& info) const;
89 
90  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
91  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
92  virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
93  const WorkloadInfo& info) const;
94 
95  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
96  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
97  virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
98  const WorkloadInfo& Info) const;
99 
100  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
101  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
102  virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
103  const WorkloadInfo& Info) const;
104 
105  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
106  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
107  virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
108  const WorkloadInfo& info) const;
109 
110  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
111  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
112  virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
113  const WorkloadInfo& Info) const;
114 
115  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
116  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
117  virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
118  const WorkloadInfo& info) const;
119 
120  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
121  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
122  virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
123  const WorkloadInfo& info) const;
124 
125  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
126  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
127  virtual std::unique_ptr<IWorkload> CreateConvertBf16ToFp32(const ConvertBf16ToFp32QueueDescriptor& descriptor,
128  const WorkloadInfo& info) const;
129 
130  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
131  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
132  virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
133  const WorkloadInfo& info) const;
134 
135  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
136  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
137  virtual std::unique_ptr<IWorkload> CreateConvertFp32ToBf16(const ConvertFp32ToBf16QueueDescriptor& descriptor,
138  const WorkloadInfo& info) const;
139 
140  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
141  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
142  virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
143  const WorkloadInfo& info) const;
144 
145  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
146  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
147  virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
148  const WorkloadInfo& info) const;
149 
150  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
151  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
152  virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
153  const WorkloadInfo& info) const;
154 
155  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
156  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
157  virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
158  const WorkloadInfo& info) const;
159 
160  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
161  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
162  virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
163  const WorkloadInfo& info) const;
164 
165  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
166  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
167  virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(
168  const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const;
169 
170  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
171  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
172  virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
173  const WorkloadInfo& info) const;
174 
175  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
176  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
177  virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess(
178  const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const;
179 
180  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
181  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
182  virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
183  const WorkloadInfo& info) const;
184 
185  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
186  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
187  virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
188  const WorkloadInfo& Info) const;
189 
190  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
191  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
192  virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
193  const WorkloadInfo& info) const;
194 
195  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
196  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
197  virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
198  const WorkloadInfo& info) const;
199 
200  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
201  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
202  virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
203  const WorkloadInfo& info) const;
204 
205  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
206  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
207  virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
208  const WorkloadInfo& info) const;
209 
210  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
211  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
212  virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
213  const WorkloadInfo& info) const;
214 
215  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
216  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
217  virtual std::unique_ptr<IWorkload> CreateInstanceNormalization(
218  const InstanceNormalizationQueueDescriptor& descriptor,
219  const WorkloadInfo& info) const;
220 
221  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
222  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
223  virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
224  const WorkloadInfo& info) const;
225 
226  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
227  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
228  virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
229  const WorkloadInfo& Info) const;
230 
231  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
232  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
233  virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
234  const WorkloadInfo& Info) const;
235 
236  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
237  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
238  virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
239  const WorkloadInfo& info) const;
240 
241  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
242  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
243  virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
244  const WorkloadInfo& info) const;
245 
246  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
247  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
248  virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
249  const WorkloadInfo& info) const;
250 
251  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
252  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
253  virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
254  const WorkloadInfo& Info) const;
255 
256  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
257  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
258  virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
259  const WorkloadInfo& info) const;
260 
261  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
262  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
263  virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
264  const WorkloadInfo& info) const;
265 
266  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
267  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
268  virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor,
269  const WorkloadInfo& info) const;
270 
271  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
272  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
273  virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
274  const WorkloadInfo& info) const;
275 
276  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
277  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
278  virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
279  const WorkloadInfo& info) const;
280 
281  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
282  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
283  virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
284  const WorkloadInfo& info) const;
285 
286  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
287  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
288  virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
289  const WorkloadInfo& info) const;
290 
291  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
292  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
293  virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
294  const WorkloadInfo& Info) const;
295 
296  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
297  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
298  virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
299  const WorkloadInfo& info) const;
300 
301  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
302  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
303  virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
304  const WorkloadInfo& info) const;
305 
306  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
307  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
308  virtual std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor,
309  const WorkloadInfo& info) const;
310 
311  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
312  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
313  virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
314  const WorkloadInfo& info) const;
315 
316  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
317  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
318  virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
319  const WorkloadInfo& info) const;
320 
321  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
322  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
323  virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
324  const WorkloadInfo& Info) const;
325 
326  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
327  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
328  virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
329  const WorkloadInfo& info) const;
330 
331  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
332  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
333  virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
334  const WorkloadInfo& info) const;
335 
336  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
337  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
338  virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
339  const WorkloadInfo& info) const;
340 
341  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
342  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
343  virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
344  const WorkloadInfo& info) const;
345 
346  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
347  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
348  virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
349  const WorkloadInfo& info) const;
350 
351  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
352  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
353  virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
354  const WorkloadInfo& info) const;
355 
356  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
357  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
358  virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor,
359  const WorkloadInfo& info) const;
360 
361  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
362  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
363  virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
364  const WorkloadInfo& info) const;
365 
366  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
367  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
368  virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
369  const WorkloadInfo& info) const;
370 
371  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
372  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
373  virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
374  const WorkloadInfo& info) const;
375 
376  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
377  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
378  virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
379  const WorkloadInfo& info) const;
380 
381  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
382  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
383  virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
384  const WorkloadInfo& info) const;
385 
386  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
387  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
388  virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
389  const WorkloadInfo& info) const;
390 
391  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
392  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
393  virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
394  const WorkloadInfo& info) const;
395 
396  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
397  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
398  virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
399  const WorkloadInfo& Info) const;
400 
401  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
402  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
403  virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor,
404  const WorkloadInfo& Info) const;
405 
406  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
407  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
408  virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
409  const WorkloadInfo& info) const;
410 
411  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
412  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
413  virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d(
414  const TransposeConvolution2dQueueDescriptor& descriptor,
415  const WorkloadInfo& info) const;
416 
417  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
418  "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.11")
419  virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
421  const WorkloadInfo& info) const;
422 
423 private:
424  static bool IsLayerConfigurationSupported(const BackendId& backendId,
425  const IConnectableLayer& connectableLayer,
426  Optional<DataType> dataType,
427  std::string& outReasonIfUnsupported,
428  const ModelOptions& modelOptions = {});
429 };
430 
431 } // 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:66
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 std::unique_ptr< IWorkload > CreateInput(const InputQueueDescriptor &descriptor, const WorkloadInfo &info) const =0
virtual void AfterWorkloadsCreated()
ARMNN_NO_DEPRECATE_WARN_BEGIN struct ARMNN_DEPRECATED_MSG_REMOVAL_DATE("ResizeBilinearQueueDescriptor is deprecated use ResizeQueueDescriptor instead", "22.08") ResizeBilinearQueueDescriptor
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
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:467
virtual bool SupportsSubTensors() const =0