blob: ef507a64f82322b91103ce088cb86d5974f65db6 [file] [log] [blame]
Derek Lambertie3803ea2019-11-13 10:36:08 +00001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "WorkloadFactory.hpp"
9
10namespace armnn
11{
12
13class WorkloadFactoryBase : public IWorkloadFactory
14{
15public:
16 bool SupportsSubTensors() const override
17 { return false; };
18
Derek Lamberti901ea112019-12-10 22:07:09 +000019 std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& /*parent*/,
20 TensorShape const& /*subTensorShape*/,
21 unsigned int const */*subTensorOrigin*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000022 { return nullptr; };
23
Derek Lamberti901ea112019-12-10 22:07:09 +000024 std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/,
25 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000026 { return nullptr; }
27
Derek Lamberti901ea112019-12-10 22:07:09 +000028 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
29 const bool /*IsMemoryManaged*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000030 { return nullptr; }
31
Derek Lamberti901ea112019-12-10 22:07:09 +000032 std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
33 DataLayout /*dataLayout*/,
34 const bool /*IsMemoryManaged*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000035 { return nullptr; }
36
Derek Lamberti901ea112019-12-10 22:07:09 +000037 std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
38 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000039 { return nullptr; }
40
Derek Lamberti901ea112019-12-10 22:07:09 +000041 std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
42 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000043 { return nullptr; }
44
Derek Lamberti901ea112019-12-10 22:07:09 +000045 std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
46 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000047 { return nullptr; }
48
Derek Lamberti901ea112019-12-10 22:07:09 +000049 std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/,
50 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000051 { return nullptr; }
52
Derek Lamberti901ea112019-12-10 22:07:09 +000053 std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/,
54 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000055 { return nullptr; }
56
Derek Lamberti901ea112019-12-10 22:07:09 +000057 std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
58 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000059 { return nullptr; }
60
Derek Lamberti901ea112019-12-10 22:07:09 +000061 std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
62 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000063 { return nullptr; }
64
Derek Lamberti901ea112019-12-10 22:07:09 +000065 std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
66 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000067 { return nullptr; }
68
Derek Lamberti901ea112019-12-10 22:07:09 +000069 std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/,
70 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000071 { return nullptr; }
72
Derek Lamberti901ea112019-12-10 22:07:09 +000073 std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/,
74 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000075 { return nullptr; }
76
Derek Lamberti901ea112019-12-10 22:07:09 +000077 std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
78 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000079 { return nullptr; }
80
Derek Lamberti901ea112019-12-10 22:07:09 +000081 std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
82 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000083 { return nullptr; }
84
Derek Lamberti901ea112019-12-10 22:07:09 +000085 std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
86 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000087 { return nullptr; }
88
Derek Lamberti901ea112019-12-10 22:07:09 +000089 std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/,
90 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000091 { return nullptr; }
92
Derek Lamberti901ea112019-12-10 22:07:09 +000093 std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/,
94 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000095 { return nullptr; }
96
Derek Lamberti901ea112019-12-10 22:07:09 +000097 std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/,
98 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +000099 { return nullptr; }
100
Derek Lamberti901ea112019-12-10 22:07:09 +0000101 std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
102 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000103 { return nullptr; }
104
josh minor4a3c6102020-01-06 16:40:46 -0600105 std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
106 const WorkloadInfo& info) const override
107 {
108 if (descriptor.m_Parameters.m_Operation == UnaryOperation::Abs)
109 {
Jan Eilers1b2654f2021-09-24 15:45:46 +0100110 { return nullptr; }
josh minor4a3c6102020-01-06 16:40:46 -0600111 }
112 else if (descriptor.m_Parameters.m_Operation == UnaryOperation::Rsqrt)
113 {
Jan Eilers1b2654f2021-09-24 15:45:46 +0100114 { return nullptr; }
josh minor4a3c6102020-01-06 16:40:46 -0600115 }
Narumol Prangnawarat0c95f4c2020-11-18 16:52:07 +0000116 else if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
117 {
118 return CreateLogicalUnary(descriptor, info);
119 }
Jan Eilers1b2654f2021-09-24 15:45:46 +0100120 { return nullptr; }
josh minor4a3c6102020-01-06 16:40:46 -0600121 }
122
Derek Lamberti901ea112019-12-10 22:07:09 +0000123 std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/,
124 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000125 { return nullptr; }
126
Derek Lamberti901ea112019-12-10 22:07:09 +0000127 std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
128 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000129 { return nullptr; }
130
Derek Lamberti901ea112019-12-10 22:07:09 +0000131 std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
132 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000133 { return nullptr; }
134
Derek Lamberti901ea112019-12-10 22:07:09 +0000135 std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/,
136 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000137 { return nullptr; }
138
Derek Lamberti901ea112019-12-10 22:07:09 +0000139 std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/,
140 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000141 { return nullptr; }
142
Derek Lamberti901ea112019-12-10 22:07:09 +0000143 std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/,
144 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000145 { return nullptr; }
146
Derek Lamberti901ea112019-12-10 22:07:09 +0000147 std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
148 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000149 { return nullptr; }
150
Derek Lamberti901ea112019-12-10 22:07:09 +0000151 std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
152 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000153 { return nullptr; }
154
Derek Lamberti901ea112019-12-10 22:07:09 +0000155 std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
156 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000157 { return nullptr; }
158
Derek Lamberti901ea112019-12-10 22:07:09 +0000159 std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/,
160 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000161 { return nullptr; }
162
Derek Lamberti901ea112019-12-10 22:07:09 +0000163 std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
164 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000165 { return nullptr; }
166
Derek Lamberti901ea112019-12-10 22:07:09 +0000167 std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
168 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000169 { return nullptr; }
170
Derek Lamberti901ea112019-12-10 22:07:09 +0000171 std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
172 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000173 { return nullptr; }
174
Derek Lamberti901ea112019-12-10 22:07:09 +0000175 std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
176 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000177 { return nullptr; }
178
Derek Lamberti901ea112019-12-10 22:07:09 +0000179 std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
180 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000181 { return nullptr; }
182
Derek Lamberti901ea112019-12-10 22:07:09 +0000183 std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
184 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000185 { return nullptr; }
186
Derek Lamberti901ea112019-12-10 22:07:09 +0000187 std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
188 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000189 { return nullptr; }
190
Derek Lamberti901ea112019-12-10 22:07:09 +0000191 std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/,
192 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000193 { return nullptr; }
194
Derek Lamberti901ea112019-12-10 22:07:09 +0000195 std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
196 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000197 { return nullptr; }
198
Derek Lamberti901ea112019-12-10 22:07:09 +0000199 std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
200 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000201 { return nullptr; }
202
Derek Lamberti901ea112019-12-10 22:07:09 +0000203 std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
204 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000205 { return nullptr; }
206
Derek Lamberti901ea112019-12-10 22:07:09 +0000207 std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/,
208 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000209 { return nullptr; }
210
Derek Lamberti901ea112019-12-10 22:07:09 +0000211 std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
212 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000213 { return nullptr; }
214
Derek Lamberti901ea112019-12-10 22:07:09 +0000215 std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
216 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000217 { return nullptr; }
218
Finn Williams2605b232020-06-10 15:53:46 +0100219 std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/,
220 const WorkloadInfo& /*info*/) const override
221 { return nullptr; }
222
Derek Lamberti901ea112019-12-10 22:07:09 +0000223 std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
224 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000225 { return nullptr; }
226
Derek Lamberti901ea112019-12-10 22:07:09 +0000227 std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
228 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000229 { return nullptr; }
230
Derek Lamberti901ea112019-12-10 22:07:09 +0000231 std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
232 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000233 { return nullptr; }
234
Derek Lamberti901ea112019-12-10 22:07:09 +0000235 std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
236 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000237 { return nullptr; }
238
Derek Lamberti901ea112019-12-10 22:07:09 +0000239 std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
240 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000241 { return nullptr; }
242
Derek Lamberti901ea112019-12-10 22:07:09 +0000243 std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
244 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000245 { return nullptr; }
246
Derek Lamberti901ea112019-12-10 22:07:09 +0000247 std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
248 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000249 { return nullptr; }
250
Derek Lamberti901ea112019-12-10 22:07:09 +0000251 std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
252 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000253 { return nullptr; }
254
Derek Lamberti901ea112019-12-10 22:07:09 +0000255 std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/,
256 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000257 { return nullptr; }
258
Derek Lamberti901ea112019-12-10 22:07:09 +0000259 std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
260 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000261 { return nullptr; }
262
Derek Lamberti901ea112019-12-10 22:07:09 +0000263 std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
264 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000265 { return nullptr; }
266
Mike Kellyc9ea45a2020-02-28 18:11:58 +0000267 std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
268 const WorkloadInfo& /*info*/) const override
269 { return nullptr; }
270
Derek Lamberti901ea112019-12-10 22:07:09 +0000271 std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
272 const WorkloadInfo& /*info*/) const override
Derek Lambertie3803ea2019-11-13 10:36:08 +0000273 { return nullptr; }
274};
275
276} //namespace armnn