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