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