From 611c7fb97412230d5cefee047081455fb60db06c Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Fri, 7 Jan 2022 09:47:29 +0000 Subject: IVGCVSW-6641 Stabilize the IWorkloadFactory interface with unified strategy Signed-off-by: Teresa Charlin Change-Id: Ia941be9bf2c15fe56e49a9b9a2bbe943a8152438 --- src/backends/reference/RefWorkloadFactory.cpp | 507 +++++++++++++++++++++++++- src/backends/reference/RefWorkloadFactory.hpp | 138 ++++++- 2 files changed, 643 insertions(+), 2 deletions(-) (limited to 'src/backends/reference') diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index 01e7a3efb1..9db81fc9cb 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #include @@ -141,6 +141,511 @@ std::unique_ptr RefWorkloadFactory::CreateTensorHandle(const Tens } } +std::unique_ptr RefWorkloadFactory::CreateWorkload(LayerType type, + const QueueDescriptor& descriptor, + const WorkloadInfo& info) const +{ + switch(type) + { + case LayerType::Activation : + { + auto activationQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*activationQueueDescriptor, info); + } + case LayerType::Addition : + { + auto additionQueueDescriptor = PolymorphicDowncast(&descriptor); + + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*additionQueueDescriptor, info); + } + else + { + return std::make_unique>(*additionQueueDescriptor, info); + } + } + case LayerType::ArgMinMax : + { + auto argMinMaxQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*argMinMaxQueueDescriptor, info); + } + case LayerType::BatchNormalization : + { + auto batchNormQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*batchNormQueueDescriptor, info); + } + case LayerType::BatchToSpaceNd : + { + auto batchToSpaceNdQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*batchToSpaceNdQueueDescriptor, info); + } + case LayerType::Cast : + { + auto castQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*castQueueDescriptor, info); + } + case LayerType::ChannelShuffle : + { + auto channelShuffleQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*channelShuffleQueueDescriptor, info); + } + case LayerType::Comparison : + { + auto comparisonQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*comparisonQueueDescriptor, info); + } + case LayerType::Concat : + { + auto concatQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*concatQueueDescriptor, info); + } + case LayerType::Constant : + { + auto constantQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*constantQueueDescriptor, info); + } + case LayerType::ConvertBf16ToFp32 : + { + auto convertBf16ToFp32QueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*convertBf16ToFp32QueueDescriptor, info); + } + case LayerType::ConvertFp16ToFp32: + { + auto convertFp16ToFp32QueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*convertFp16ToFp32QueueDescriptor, info); + } + case LayerType::ConvertFp32ToBf16: + { + auto convertFp32ToBf16QueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*convertFp32ToBf16QueueDescriptor, info); + } + case LayerType::ConvertFp32ToFp16: + { + auto convertFp32ToFp16QueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*convertFp32ToFp16QueueDescriptor, info); + } + case LayerType::Convolution2d: + { + auto convolution2dQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*convolution2dQueueDescriptor, info); + } + case LayerType::Convolution3d: + { + auto convolution3dQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*convolution3dQueueDescriptor, info); + } + case LayerType::Debug: + { + auto debugQueueDescriptor = PolymorphicDowncast(&descriptor); + if (IsBFloat16(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsFloat16(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsQSymmS16(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsQSymmS8(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsQAsymmU8(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsQAsymmS8(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + if (IsSigned32(info)) + { + return std::make_unique(*debugQueueDescriptor, info); + } + + return MakeWorkload(*debugQueueDescriptor, info); + } + case LayerType::DepthToSpace: + { + auto depthToSpaceQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*depthToSpaceQueueDescriptor, info); + } + case LayerType::DepthwiseConvolution2d: + { + auto depthwiseConvolution2DQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*depthwiseConvolution2DQueueDescriptor, info); + } + case LayerType::Dequantize: + { + auto dequantizeQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*dequantizeQueueDescriptor, info); + } + case LayerType::DetectionPostProcess: + { + auto detectionPostProcessQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*detectionPostProcessQueueDescriptor, info); + } + case LayerType::Division: + { + auto divisionQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*divisionQueueDescriptor, info); + } + else + { + return std::make_unique>(*divisionQueueDescriptor, info); + } + } + case LayerType::ElementwiseUnary: + { + auto elementwiseUnaryQueueDescriptor + = PolymorphicDowncast(&descriptor); + if ((*elementwiseUnaryQueueDescriptor).m_Parameters.m_Operation == UnaryOperation::LogicalNot) + { + return std::make_unique(*elementwiseUnaryQueueDescriptor, info); + } + return std::make_unique(*elementwiseUnaryQueueDescriptor, info); + } + case LayerType::FakeQuantization: + { + auto fakeQuantizationQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*fakeQuantizationQueueDescriptor, info); + } + case LayerType::Fill: + { + auto fillQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*fillQueueDescriptor, info); + } + case LayerType::Floor: + { + auto floorQueueDescriptor = PolymorphicDowncast(&descriptor); + if(IsQuantizedType(info.m_InputTensorInfos[0].GetDataType())) + { + return nullptr; + } + else + { + return std::make_unique(*floorQueueDescriptor, info); + } + } + case LayerType::FullyConnected: + { + auto fullyConnectedQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*fullyConnectedQueueDescriptor, info); + } + case LayerType::Gather: + { + auto gatherQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*gatherQueueDescriptor, info); + } + case LayerType::Input: + { + auto inputQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos.empty() ) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Input cannot be zero length"); + } + if (info.m_OutputTensorInfos.empty()) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length"); + } + + if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes()) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateInput: " + "data input and output differ in byte count."); + } + + return std::make_unique(*inputQueueDescriptor, info); + } + case LayerType::InstanceNormalization: + { + auto instanceNormalizationQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*instanceNormalizationQueueDescriptor, info); + } + case LayerType::L2Normalization: + { + auto l2NormalizationQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*l2NormalizationQueueDescriptor, info); + } + case LayerType::LogicalBinary: + { + auto logicalBinaryQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*logicalBinaryQueueDescriptor, info); + } + case LayerType::LogSoftmax: + { + auto logSoftmaxQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*logSoftmaxQueueDescriptor, info); + } + case LayerType::Lstm: + { + auto lstmQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*lstmQueueDescriptor, info); + } + case LayerType::Maximum: + { + auto maximumQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*maximumQueueDescriptor, info); + } + else + { + return std::make_unique>(*maximumQueueDescriptor, info); + } + } + case LayerType::Mean: + { + auto meanQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*meanQueueDescriptor, info); + } + case LayerType::MemCopy: + { + auto memCopyQueueDescriptor = PolymorphicDowncast(&descriptor); + if (descriptor.m_Inputs.empty()) + { + throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor."); + } + return std::make_unique(*memCopyQueueDescriptor, info); + } + case LayerType::MemImport: + { + auto memImportQueueDescriptor = PolymorphicDowncast(&descriptor); + if (descriptor.m_Inputs.empty()) + { + throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor."); + } + return std::make_unique(*memImportQueueDescriptor, info); + } + case LayerType::Minimum: + { + auto minimumQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*minimumQueueDescriptor, info); + } + else + { + return std::make_unique>(*minimumQueueDescriptor, info); + } + } + case LayerType::Multiplication: + { + auto multiplicationQueueDescriptor + = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*multiplicationQueueDescriptor, info); + } + else + { + return std::make_unique>(*multiplicationQueueDescriptor, info); + } + } + case LayerType::Normalization: + { + auto normalizationQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*normalizationQueueDescriptor, info); + } + case LayerType::Output: + { + auto outputQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos.empty() ) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Input cannot be zero length"); + } + if (info.m_OutputTensorInfos.empty()) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Output cannot be zero length"); + } + if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes()) + { + throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output " + "differ in byte count."); + } + + return std::make_unique(*outputQueueDescriptor, info); + } + case LayerType::Pad: + { + auto padQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*padQueueDescriptor, info); + } + case LayerType::Permute: + { + auto permuteQueueDescriptor = PolymorphicDowncast(&descriptor); + if (IsQSymmS16(info)) + { + return std::make_unique(*permuteQueueDescriptor, info); + } + else if (IsBFloat16(info)) + { + return std::make_unique(*permuteQueueDescriptor, info); + } + else if (IsQAsymmS8(info)) + { + return std::make_unique(*permuteQueueDescriptor, info); + } + return MakeWorkloadHelper(*permuteQueueDescriptor, info); + } + case LayerType::Pooling2d: + { + auto pooling2dQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*pooling2dQueueDescriptor, info); + } + case LayerType::Pooling3d: + { + auto pooling3dQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*pooling3dQueueDescriptor, info); + } + case LayerType::PreCompiled: + { + return nullptr; + } + case LayerType::Prelu: + { + auto preluQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*preluQueueDescriptor, info); + } + case LayerType::QLstm: + { + auto qlstmQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*qlstmQueueDescriptor, info); + } + case LayerType::Quantize: + { + auto quantizeQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*quantizeQueueDescriptor, info); + } + case LayerType::Rank: + { + auto rankQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*rankQueueDescriptor, info); + } + case LayerType::Reduce: + { + auto reduceQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*reduceQueueDescriptor, info); + } + case LayerType::Reshape: + { + auto reshapeQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*reshapeQueueDescriptor, info); + } + case LayerType::Resize: + { + auto resizeQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*resizeQueueDescriptor, info); + } + case LayerType::Shape: + { + auto shapeQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*shapeQueueDescriptor, info); + } + case LayerType::Slice: + { + auto sliceQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*sliceQueueDescriptor, info); + } + case LayerType::Softmax: + { + auto softmaxQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*softmaxQueueDescriptor, info); + } + case LayerType::SpaceToBatchNd: + { + auto spaceToBatchNdQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*spaceToBatchNdQueueDescriptor, info); + } + case LayerType::SpaceToDepth: + { + auto spaceToDepthQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*spaceToDepthQueueDescriptor, info); + } + case LayerType::Splitter: + { + auto splitterQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*splitterQueueDescriptor, info); + } + case LayerType::Stack: + { + auto stackQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*stackQueueDescriptor, info); + } + case LayerType::StridedSlice: + { + auto stridedSliceQueueDescriptor = PolymorphicDowncast(&descriptor); + return std::make_unique(*stridedSliceQueueDescriptor, info); + } + case LayerType::Subtraction: + { + auto subtractionQueueDescriptor = PolymorphicDowncast(&descriptor); + if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) + { + return std::make_unique>(*subtractionQueueDescriptor, info); + } + else + { + return std::make_unique>(*subtractionQueueDescriptor, info); + } + } + case LayerType::Transpose: + { + auto transposeQueueDescriptor = PolymorphicDowncast(&descriptor); + if (IsQSymmS16(info)) + { + return std::make_unique(*transposeQueueDescriptor, info); + } + else if (IsBFloat16(info)) + { + return std::make_unique(*transposeQueueDescriptor, info); + } + else if (IsQAsymmS8(info)) + { + return std::make_unique(*transposeQueueDescriptor, info); + } + return MakeWorkloadHelper + (*transposeQueueDescriptor, info); + } + case LayerType::TransposeConvolution2d: + { + auto transposeConvolution2dQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*transposeConvolution2dQueueDescriptor, info); + } + case LayerType::UnidirectionalSequenceLstm: + { + auto unidirectionalSequenceLstmQueueDescriptor + = PolymorphicDowncast(&descriptor); + return std::make_unique(*unidirectionalSequenceLstmQueueDescriptor, + info); + } + default: + return nullptr; + } +} + std::unique_ptr RefWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, const WorkloadInfo& info) const { diff --git a/src/backends/reference/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp index 3dfd3d8a7a..d9d4371a69 100644 --- a/src/backends/reference/RefWorkloadFactory.hpp +++ b/src/backends/reference/RefWorkloadFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -66,201 +66,337 @@ public: DataLayout dataLayout, const bool IsMemoryManaged = true) const override; + std::unique_ptr CreateWorkload(LayerType type, + const QueueDescriptor& descriptor, + const WorkloadInfo& info) const override; + + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateActivation(const ActivationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateAddition(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateCast(const CastQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateComparison(const ComparisonQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConcat(const ConcatQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConstant(const ConstantQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvertBf16ToFp32(const ConvertBf16ToFp32QueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvertFp32ToBf16(const ConvertFp32ToBf16QueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDebug(const DebugQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDequantize(const DequantizeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateDivision(const DivisionQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateFill(const FillQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateFloor(const FloorQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateGather(const GatherQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateInput(const InputQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateLstm(const LstmQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMaximum(const MaximumQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMean(const MeanQueueDescriptor& descriptor, const WorkloadInfo& Info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMemCopy(const MemCopyQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMemImport(const MemImportQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMinimum(const MinimumQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateNormalization(const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateOutput(const OutputQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePad(const PadQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePermute(const PermuteQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePooling3d(const Pooling3dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreatePrelu(const PreluQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateQLstm(const QLstmQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateQuantize(const QuantizeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateRank(const RankQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateReduce(const ReduceQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateReshape(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateResize(const ResizeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateShape(const ShapeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSlice(const SliceQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSplitter(const SplitterQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateStack(const StackQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateSubtraction(const SubtractionQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateTranspose(const TransposeQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const override; + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " + "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "22.08") std::unique_ptr CreateUnidirectionalSequenceLstm( const UnidirectionalSequenceLstmQueueDescriptor& descriptor, const WorkloadInfo& info) const override; -- cgit v1.2.1