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>
10 #include <armnn/backends/WorkloadFactory.hpp>
11 #include <armnn/utility/IgnoreUnused.hpp>
12
13
14 namespace armnn
15 {
16
17 template <typename QueueDescriptorType>
IsOperationQueueDescriptor(const QueueDescriptorType &)18 constexpr bool IsOperationQueueDescriptor(const QueueDescriptorType&) { return true; }
19
20 template <>
IsOperationQueueDescriptor(const MemCopyQueueDescriptor &)21 constexpr bool IsOperationQueueDescriptor(const MemCopyQueueDescriptor&) { return false; }
22
23 template <>
IsOperationQueueDescriptor(const ConstantQueueDescriptor &)24 constexpr bool IsOperationQueueDescriptor(const ConstantQueueDescriptor&) { return false; }
25
26 template <>
IsOperationQueueDescriptor(const PermuteQueueDescriptor &)27 constexpr bool IsOperationQueueDescriptor(const PermuteQueueDescriptor&) { return false; }
28
29 // Reference workload factory.
30 class RefWorkloadFactory : public IWorkloadFactory
31 {
32 public:
33 explicit RefWorkloadFactory(const std::shared_ptr<RefMemoryManager>& memoryManager);
34 RefWorkloadFactory();
35
~RefWorkloadFactory()36 ~RefWorkloadFactory() {}
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
SupportsSubTensors() const49 bool SupportsSubTensors() const override { return false; }
50
51 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead")
CreateSubTensorHandle(ITensorHandle & parent,TensorShape const & subTensorShape,unsigned int const * subTensorOrigin) const52 std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent,
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.", "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(
391 const UnidirectionalSequenceLstmQueueDescriptor& descriptor,
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
402