1 // 2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include "ITensorHandle.hpp" 8 #include "Workload.hpp" 9 10 #include <armnn/Optional.hpp> 11 #include <armnn/INetwork.hpp> 12 #include <armnn/TensorFwd.hpp> 13 14 #include <memory> 15 16 namespace armnn 17 { 18 19 class Layer; 20 21 // Workload factory interface for compute backends. 22 class IWorkloadFactory 23 { 24 public: ~IWorkloadFactory()25 virtual ~IWorkloadFactory() { } 26 AfterWorkloadsCreated()27 virtual void AfterWorkloadsCreated() {}; 28 29 virtual const BackendId& GetBackendId() const = 0; 30 31 static bool IsLayerSupported(const BackendId& backendId, 32 const IConnectableLayer& layer, 33 Optional<DataType> dataType, 34 std::string& outReasonIfUnsupported); 35 36 static bool IsLayerSupported(const IConnectableLayer& layer, 37 Optional<DataType> dataType, 38 std::string& outReasonIfUnsupported); 39 40 static bool IsLayerSupported(const IConnectableLayer& layer, 41 Optional<DataType> dataType, 42 std::string& outReasonIfUnsupported, 43 const ModelOptions& modelOptions); 44 45 static bool IsLayerSupported(const BackendId& backendId, 46 const IConnectableLayer& layer, 47 Optional<DataType> dataType, 48 std::string& outReasonIfUnsupported, 49 const ModelOptions& modelOptions); 50 51 virtual bool SupportsSubTensors() const = 0; 52 53 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateSubTensorHandle instead") 54 virtual std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent, 55 TensorShape const& subTensorShape, 56 unsigned int const* subTensorOrigin 57 ) const = 0; 58 59 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") 60 virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, 61 const bool IsMemoryManaged = true) const = 0; 62 63 ARMNN_DEPRECATED_MSG("Use ITensorHandleFactory::CreateTensorHandle instead") 64 virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, 65 DataLayout dataLayout, 66 const bool IsMemoryManaged = true) const = 0; 67 68 virtual std::unique_ptr<IWorkload> CreateWorkload(LayerType type, 69 const QueueDescriptor& descriptor, 70 const WorkloadInfo& info) const; 71 72 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 73 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 74 virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor, 75 const WorkloadInfo& info) const; 76 77 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 78 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 79 virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor, 80 const WorkloadInfo& info) const; 81 82 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 83 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 84 virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor, 85 const WorkloadInfo& info) const; 86 87 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 88 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 89 virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, 90 const WorkloadInfo& info) const; 91 92 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 93 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 94 virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor, 95 const WorkloadInfo& info) const; 96 97 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 98 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 99 virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, 100 const WorkloadInfo& Info) const; 101 102 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 103 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 104 virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor, 105 const WorkloadInfo& Info) const; 106 107 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 108 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 109 virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, 110 const WorkloadInfo& info) const; 111 112 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 113 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 114 virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor, 115 const WorkloadInfo& Info) const; 116 117 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 118 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 119 virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor, 120 const WorkloadInfo& info) const; 121 122 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 123 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 124 virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor, 125 const WorkloadInfo& info) const; 126 127 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 128 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 129 virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor, 130 const WorkloadInfo& info) const; 131 132 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 133 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 134 virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor, 135 const WorkloadInfo& info) const; 136 137 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 138 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 139 virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, 140 const WorkloadInfo& info) const; 141 142 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 143 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 144 virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor, 145 const WorkloadInfo& info) const; 146 147 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 148 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 149 virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor, 150 const WorkloadInfo& info) const; 151 152 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 153 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 154 virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, 155 const WorkloadInfo& info) const; 156 157 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 158 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 159 virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d( 160 const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const; 161 162 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 163 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 164 virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor, 165 const WorkloadInfo& info) const; 166 167 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 168 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 169 virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess( 170 const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const; 171 172 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 173 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 174 virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor, 175 const WorkloadInfo& info) const; 176 177 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 178 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 179 virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor, 180 const WorkloadInfo& Info) const; 181 182 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 183 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 184 virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor, 185 const WorkloadInfo& info) const; 186 187 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 188 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 189 virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor, 190 const WorkloadInfo& info) const; 191 192 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 193 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 194 virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor, 195 const WorkloadInfo& info) const; 196 197 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 198 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 199 virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, 200 const WorkloadInfo& info) const; 201 202 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 203 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 204 virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor, 205 const WorkloadInfo& info) const; 206 207 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 208 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 209 virtual std::unique_ptr<IWorkload> CreateInstanceNormalization( 210 const InstanceNormalizationQueueDescriptor& descriptor, 211 const WorkloadInfo& info) const; 212 213 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 214 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 215 virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, 216 const WorkloadInfo& info) const; 217 218 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 219 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 220 virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, 221 const WorkloadInfo& Info) const; 222 223 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 224 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 225 virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor, 226 const WorkloadInfo& Info) const; 227 228 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 229 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 230 virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, 231 const WorkloadInfo& info) const; 232 233 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 234 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 235 virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor, 236 const WorkloadInfo& info) const; 237 238 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 239 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 240 virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor, 241 const WorkloadInfo& info) const; 242 243 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 244 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 245 virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor, 246 const WorkloadInfo& Info) const; 247 248 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 249 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 250 virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor, 251 const WorkloadInfo& info) const; 252 253 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 254 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 255 virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor, 256 const WorkloadInfo& info) const; 257 258 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 259 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 260 virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor, 261 const WorkloadInfo& info) const; 262 263 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 264 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 265 virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor, 266 const WorkloadInfo& info) const; 267 268 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 269 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 270 virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, 271 const WorkloadInfo& info) const; 272 273 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 274 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 275 virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor, 276 const WorkloadInfo& info) const; 277 278 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 279 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 280 virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor, 281 const WorkloadInfo& info) const; 282 283 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 284 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 285 virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor, 286 const WorkloadInfo& Info) const; 287 288 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 289 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 290 virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor, 291 const WorkloadInfo& info) const; 292 293 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 294 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 295 virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, 296 const WorkloadInfo& info) const; 297 298 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 299 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 300 virtual std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor, 301 const WorkloadInfo& info) const; 302 303 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 304 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 305 virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, 306 const WorkloadInfo& info) const; 307 308 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 309 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 310 virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor, 311 const WorkloadInfo& info) const; 312 313 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 314 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 315 virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor, 316 const WorkloadInfo& Info) const; 317 318 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 319 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 320 virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor, 321 const WorkloadInfo& info) const; 322 323 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 324 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 325 virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, 326 const WorkloadInfo& info) const; 327 328 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 329 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 330 virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor, 331 const WorkloadInfo& info) const; 332 333 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 334 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 335 virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor, 336 const WorkloadInfo& info) const; 337 338 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 339 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 340 virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor, 341 const WorkloadInfo& info) const; 342 343 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 344 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 345 virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor, 346 const WorkloadInfo& info) const; 347 348 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 349 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 350 virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor, 351 const WorkloadInfo& info) const; 352 353 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 354 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 355 virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor, 356 const WorkloadInfo& info) const; 357 358 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 359 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 360 virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, 361 const WorkloadInfo& info) const; 362 363 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 364 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 365 virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, 366 const WorkloadInfo& info) const; 367 368 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 369 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 370 virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, 371 const WorkloadInfo& info) const; 372 373 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 374 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 375 virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor, 376 const WorkloadInfo& info) const; 377 378 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 379 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 380 virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor, 381 const WorkloadInfo& info) const; 382 383 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 384 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 385 virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor, 386 const WorkloadInfo& info) const; 387 388 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 389 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 390 virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, 391 const WorkloadInfo& Info) const; 392 393 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 394 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 395 virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor, 396 const WorkloadInfo& Info) const; 397 398 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 399 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 400 virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor, 401 const WorkloadInfo& info) const; 402 403 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 404 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 405 virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d( 406 const TransposeConvolution2dQueueDescriptor& descriptor, 407 const WorkloadInfo& info) const; 408 409 ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " 410 "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") 411 virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm( 412 const UnidirectionalSequenceLstmQueueDescriptor& descriptor, 413 const WorkloadInfo& info) const; 414 415 private: 416 static bool IsLayerConfigurationSupported(const BackendId& backendId, 417 const IConnectableLayer& connectableLayer, 418 Optional<DataType> dataType, 419 std::string& outReasonIfUnsupported, 420 const ModelOptions& modelOptions = {}); 421 }; 422 423 } // namespace armnn 424