ArmNN
 22.02
WorkloadFactoryBase.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
9 
10 namespace armnn
11 {
12 
14 {
15 public:
16  bool SupportsSubTensors() const override
17  { return false; };
18 
19  std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& /*parent*/,
20  TensorShape const& /*subTensorShape*/,
21  unsigned int const */*subTensorOrigin*/) const override
22  { return nullptr; };
23 
24  std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/,
25  const WorkloadInfo& /*info*/) const override
26  { return nullptr; }
27 
28  std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
29  const bool /*IsMemoryManaged*/) const override
30  { return nullptr; }
31 
32  std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
33  DataLayout /*dataLayout*/,
34  const bool /*IsMemoryManaged*/) const override
35  { return nullptr; }
36 
37  std::unique_ptr<IWorkload> CreateWorkload(LayerType /*type*/,
38  const QueueDescriptor& /*descriptor*/,
39  const WorkloadInfo& /*info*/) const override
40  { return nullptr; }
41 
42  std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
43  const WorkloadInfo& /*info*/) const override
44  { return nullptr; }
45 
46  std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
47  const WorkloadInfo& /*info*/) const override
48  { return nullptr; }
49 
50  std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
51  const WorkloadInfo& /*info*/) const override
52  { return nullptr; }
53 
54  std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/,
55  const WorkloadInfo& /*info*/) const override
56  { return nullptr; }
57 
58  std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/,
59  const WorkloadInfo& /*info*/) const override
60  { return nullptr; }
61 
62  std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
63  const WorkloadInfo& /*info*/) const override
64  { return nullptr; }
65 
66  std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
67  const WorkloadInfo& /*info*/) const override
68  { return nullptr; }
69 
70  std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
71  const WorkloadInfo& /*info*/) const override
72  { return nullptr; }
73 
74  std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/,
75  const WorkloadInfo& /*info*/) const override
76  { return nullptr; }
77 
78  std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/,
79  const WorkloadInfo& /*info*/) const override
80  { return nullptr; }
81 
82  std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
83  const WorkloadInfo& /*info*/) const override
84  { return nullptr; }
85 
86  std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
87  const WorkloadInfo& /*info*/) const override
88  { return nullptr; }
89 
90  std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
91  const WorkloadInfo& /*info*/) const override
92  { return nullptr; }
93 
94  std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/,
95  const WorkloadInfo& /*info*/) const override
96  { return nullptr; }
97 
98  std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/,
99  const WorkloadInfo& /*info*/) const override
100  { return nullptr; }
101 
102  std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/,
103  const WorkloadInfo& /*info*/) const override
104  { return nullptr; }
105 
106  std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
107  const WorkloadInfo& /*info*/) const override
108  { return nullptr; }
109 
110  std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
111  const WorkloadInfo& info) const override
112  {
114  {
115  return CreateWorkload(armnn::LayerType::ElementwiseUnary, descriptor, info);
116  }
117  else
118  {
119  { return nullptr; }
120  }
121  }
122 
123  std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/,
124  const WorkloadInfo& /*info*/) const override
125  { return nullptr; }
126 
127  std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
128  const WorkloadInfo& /*info*/) const override
129  { return nullptr; }
130 
131  std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
132  const WorkloadInfo& /*info*/) const override
133  { return nullptr; }
134 
135  std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/,
136  const WorkloadInfo& /*info*/) const override
137  { return nullptr; }
138 
139  std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/,
140  const WorkloadInfo& /*info*/) const override
141  { return nullptr; }
142 
143  std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/,
144  const WorkloadInfo& /*info*/) const override
145  { return nullptr; }
146 
147  std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
148  const WorkloadInfo& /*info*/) const override
149  { return nullptr; }
150 
151  std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
152  const WorkloadInfo& /*info*/) const override
153  { return nullptr; }
154 
155  std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
156  const WorkloadInfo& /*info*/) const override
157  { return nullptr; }
158 
159  std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/,
160  const WorkloadInfo& /*info*/) const override
161  { return nullptr; }
162 
163  std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
164  const WorkloadInfo& /*info*/) const override
165  { return nullptr; }
166 
167  std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
168  const WorkloadInfo& /*info*/) const override
169  { return nullptr; }
170 
171  std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
172  const WorkloadInfo& /*info*/) const override
173  { return nullptr; }
174 
175  std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
176  const WorkloadInfo& /*info*/) const override
177  { return nullptr; }
178 
179  std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
180  const WorkloadInfo& /*info*/) const override
181  { return nullptr; }
182 
183  std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
184  const WorkloadInfo& /*info*/) const override
185  { return nullptr; }
186 
187  std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
188  const WorkloadInfo& /*info*/) const override
189  { return nullptr; }
190 
191  std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/,
192  const WorkloadInfo& /*info*/) const override
193  { return nullptr; }
194 
195  std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
196  const WorkloadInfo& /*info*/) const override
197  { return nullptr; }
198 
199  std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
200  const WorkloadInfo& /*info*/) const override
201  { return nullptr; }
202 
203  std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& /*descriptor*/,
204  const WorkloadInfo& /*info*/) const override
205  { return nullptr; }
206 
207  std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
208  const WorkloadInfo& /*info*/) const override
209  { return nullptr; }
210 
211  std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/,
212  const WorkloadInfo& /*info*/) const override
213  { return nullptr; }
214 
215  std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
216  const WorkloadInfo& /*info*/) const override
217  { return nullptr; }
218 
219  std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
220  const WorkloadInfo& /*info*/) const override
221  { return nullptr; }
222 
223  std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/,
224  const WorkloadInfo& /*info*/) const override
225  { return nullptr; }
226 
227  std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
228  const WorkloadInfo& /*info*/) const override
229  { return nullptr; }
230 
231  std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
232  const WorkloadInfo& /*info*/) const override
233  { return nullptr; }
234 
235  std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
236  const WorkloadInfo& /*info*/) const override
237  { return nullptr; }
238 
239  std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
240  const WorkloadInfo& /*info*/) const override
241  { return nullptr; }
242 
243  std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
244  const WorkloadInfo& /*info*/) const override
245  { return nullptr; }
246 
247  std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
248  const WorkloadInfo& /*info*/) const override
249  { return nullptr; }
250 
251  std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
252  const WorkloadInfo& /*info*/) const override
253  { return nullptr; }
254 
255  std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
256  const WorkloadInfo& /*info*/) const override
257  { return nullptr; }
258 
259  std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/,
260  const WorkloadInfo& /*info*/) const override
261  { return nullptr; }
262 
263  std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
264  const WorkloadInfo& /*info*/) const override
265  { return nullptr; }
266 
267  std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
268  const WorkloadInfo& /*info*/) const override
269  { return nullptr; }
270 
271  std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
272  const WorkloadInfo& /*info*/) const override
273  { return nullptr; }
274 
275  std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
276  const WorkloadInfo& /*info*/) const override
277  { return nullptr; }
278 };
279 
280 } //namespace armnn
std::unique_ptr< IWorkload > CreateSubtraction(const SubtractionQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &, const bool) const override
std::unique_ptr< ITensorHandle > CreateSubTensorHandle(ITensorHandle &, TensorShape const &, unsigned int const *) const override
std::unique_ptr< IWorkload > CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor &descriptor, const WorkloadInfo &info) const override
UnaryOperation m_Operation
Specifies the elementwiseUnary operation to execute.
std::unique_ptr< IWorkload > CreateStridedSlice(const StridedSliceQueueDescriptor &, const WorkloadInfo &) const override
DataLayout
Definition: Types.hpp:49
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::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &, DataLayout, const bool) const override
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 > CreateMerge(const MergeQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateWorkload(LayerType, const QueueDescriptor &, 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< 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
bool SupportsSubTensors() 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
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::unique_ptr< IWorkload > CreateDebug(const DebugQueueDescriptor &, const WorkloadInfo &) 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
std::unique_ptr< IWorkload > CreateMinimum(const MinimumQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreatePooling3d(const Pooling3dQueueDescriptor &, const WorkloadInfo &) const override
std::unique_ptr< IWorkload > CreateSwitch(const SwitchQueueDescriptor &, 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
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 > 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
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 > CreateFakeQuantization(const FakeQuantizationQueueDescriptor &, 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
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below...
Definition: Types.hpp:458