ArmNN
 23.05
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 
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
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.", "23.08")
125  std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& 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.", "23.08")
130  std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& 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.", "23.08")
135  std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& 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.", "23.08")
140  std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& 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.", "23.08")
145  std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& 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.", "23.08")
150  std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& 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.", "23.08")
155  std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& 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.", "23.08")
160  std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& 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.", "23.08")
165  std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& 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.", "23.08")
170  std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& 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.", "23.08")
175  std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& 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.", "23.08")
180  std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& 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.", "23.08")
185  std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& 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.", "23.08")
190  std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& 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.", "23.08")
195  std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& 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.", "23.08")
200  std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& 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.", "23.08")
205  std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& 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.", "23.08")
210  std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& 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.", "23.08")
215  std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& 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.", "23.08")
220  std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& 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.", "23.08")
225  std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& 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.", "23.08")
230  std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& 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.", "23.08")
235  std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& 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.", "23.08")
240  std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& 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.", "23.08")
245  std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& 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.", "23.08")
250  std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& 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.", "23.08")
255  std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& 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.", "23.08")
260  std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& 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.", "23.08")
265  std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& 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.", "23.08")
270  std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& 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.", "23.08")
275  std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& 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.", "23.08")
280  std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& 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.", "23.08")
285  std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& 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.", "23.08")
290  std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& 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.", "23.08")
295  std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& 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.", "23.08")
300  std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& 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.", "23.08")
305  std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& 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.", "23.08")
310  std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& 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.", "23.08")
315  std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& 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.", "23.08")
320  std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& 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.", "23.08")
325  std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& 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.", "23.08")
330  std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& 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.", "23.08")
335  std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& 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.", "23.08")
340  std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& 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.", "23.08")
345  std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& 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.", "23.08")
350  std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& 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.", "23.08")
355  std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& 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.", "23.08")
360  std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& 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.", "23.08")
365  std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& 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.", "23.08")
370  std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& 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.", "23.08")
375  std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& 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.", "23.08")
380  std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& 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.", "23.08")
385  std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& 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.", "23.08")
390  std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
392  const WorkloadInfo& info) const override;
393 
394 private:
395  template <typename F32Workload, typename U8Workload, typename QueueDescriptorType>
396  std::unique_ptr<IWorkload> MakeWorkload(const QueueDescriptorType& descriptor, const WorkloadInfo& info) const;
397 
398  mutable std::shared_ptr<RefMemoryManager> m_MemoryManager;
399 };
400 
401 } // namespace armnn
armnn::MinimumQueueDescriptor
Definition: WorkloadData.hpp:468
armnn::BackendId
Definition: BackendId.hpp:75
armnn::L2NormalizationQueueDescriptor
Definition: WorkloadData.hpp:353
armnn::ComparisonQueueDescriptor
Definition: WorkloadData.hpp:661
armnn::RefWorkloadFactory::CreateTensorHandle
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const override
Definition: RefWorkloadFactory.cpp:113
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::NormalizationQueueDescriptor
Definition: WorkloadData.hpp:247
armnn::DequantizeQueueDescriptor
Definition: WorkloadData.hpp:519
armnn::RefWorkloadFactory::CreateSubTensorHandle
std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &parent, TensorShape const &subTensorShape, unsigned int const *subTensorOrigin) const override
Definition: RefWorkloadFactory.hpp:52
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::DetectionPostProcessQueueDescriptor
Definition: WorkloadData.hpp:234
armnn::RefWorkloadFactory::RefWorkloadFactory
RefWorkloadFactory()
Definition: RefWorkloadFactory.cpp:88
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::RefWorkloadFactory::CreateWorkload
std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const override
Definition: RefWorkloadFactory.cpp:144
armnn::Layer
Definition: Layer.hpp:217
armnn::ConvertFp32ToFp16QueueDescriptor
Definition: WorkloadData.hpp:452
armnn::ModelOptions
std::vector< BackendOptions > ModelOptions
Definition: BackendOptions.hpp:18
armnn::IgnoreUnused
void IgnoreUnused(Ts &&...)
Definition: IgnoreUnused.hpp:14
RefMemoryManager.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
WorkloadFactory.hpp
armnn::FloorQueueDescriptor
Definition: WorkloadData.hpp:390
armnn::RefMemoryManager
Definition: RefMemoryManager.hpp:16
armnn::QLstmQueueDescriptor
Definition: WorkloadData.hpp:557
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::IsOperationQueueDescriptor
constexpr bool IsOperationQueueDescriptor(const QueueDescriptorType &)
Definition: RefWorkloadFactory.hpp:18
armnn::RefWorkloadFactory::GetBackendId
const BackendId & GetBackendId() const override
Definition: RefWorkloadFactory.cpp:93
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::TransposeConvolution2dQueueDescriptor
Definition: WorkloadData.hpp:539
armnn::RankQueueDescriptor
Definition: WorkloadData.hpp:324
armnn::PreluQueueDescriptor
Definition: WorkloadData.hpp:534
armnn::RefWorkloadFactory::~RefWorkloadFactory
~RefWorkloadFactory()
Definition: RefWorkloadFactory.hpp:36
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::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::RefWorkloadFactory
Definition: RefWorkloadFactory.hpp:30
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::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
armnn::Optional
Definition: Optional.hpp:270
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::RefWorkloadFactory::SupportsSubTensors
bool SupportsSubTensors() const override
Definition: RefWorkloadFactory.hpp:49
IgnoreUnused.hpp
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
armnn::RefWorkloadFactory::IsLayerSupported
static bool IsLayerSupported(const Layer &layer, Optional< DataType > dataType, std::string &outReasonIfUnsupported)
Definition: RefWorkloadFactory.cpp:98