From 7894ef93ad568250afda12e1b67bc5bfa4c0b41c Mon Sep 17 00:00:00 2001 From: Cian McGriskin Date: Tue, 1 Aug 2023 14:04:09 +0100 Subject: IVGCVSW-7635 Remove deprecated code due to be removed in 23.08 (WorkloadFactory) * WorkloadFactory.hpp CreateXXXWorkload replaced with CreateWorkload accepting LayerType for ABI stability. * These effect ref neon cl and mock backends * Also removed small deprecation comment in Optimization Views * Fixed ABI Version Issue Signed-off-by: Cian McGriskin Signed-off-by: Francis Murtagh Change-Id: Id37af2f882fc9d12b8c779de6b714013af866028 --- src/backends/neon/NeonWorkloadFactory.cpp | 487 +----------------------------- 1 file changed, 14 insertions(+), 473 deletions(-) (limited to 'src/backends/neon/NeonWorkloadFactory.cpp') diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp index 29b3ff3499..e3411de254 100644 --- a/src/backends/neon/NeonWorkloadFactory.cpp +++ b/src/backends/neon/NeonWorkloadFactory.cpp @@ -172,13 +172,13 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::BatchNormalization : { auto batchNormalizationQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*batchNormalizationQueueDescriptor, info); } case LayerType::BatchToSpaceNd : { auto batchToSpaceNdQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*batchToSpaceNdQueueDescriptor, info); } case LayerType::Cast : @@ -209,19 +209,18 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ConvertFp16ToFp32 : { auto convertFp16ToFp32QueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*convertFp16ToFp32QueueDescriptor, info); } case LayerType::ConvertFp32ToFp16 : { auto convertFp32ToFp16QueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*convertFp32ToFp16QueueDescriptor, info); } case LayerType::Convolution2d : { auto convolution2dQueueDescriptor = PolymorphicDowncast(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -242,7 +241,6 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Convolution3d : { auto convolution3dQueueDescriptor = PolymorphicDowncast(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -273,7 +271,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DepthwiseConvolution2d : { auto depthwiseConvolution2dQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*depthwiseConvolution2dQueueDescriptor, info); } case LayerType::Dequantize : @@ -284,7 +282,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DetectionPostProcess : { auto detectionPostProcessQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return MakeWorkloadHelper(*detectionPostProcessQueueDescriptor, info); } case LayerType::Division : @@ -295,8 +293,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseBinary : { auto elementwiseBinaryQueueDescriptor - = PolymorphicDowncast(&descriptor); - + = PolymorphicDowncast(&descriptor); switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation) { case BinaryOperation::Add: @@ -353,8 +350,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseUnary : { auto elementwiseUnaryQueueDescriptor - = PolymorphicDowncast(&descriptor); - + = PolymorphicDowncast(&descriptor); switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation) { case UnaryOperation::Abs: @@ -362,7 +358,6 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, AbsQueueDescriptor absQueueDescriptor; absQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; absQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique(absQueueDescriptor, info); } case UnaryOperation::Exp: @@ -378,7 +373,6 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, RsqrtQueueDescriptor rsqrtQueueDescriptor; rsqrtQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; rsqrtQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique(rsqrtQueueDescriptor, info); } case UnaryOperation::Sin: @@ -424,15 +418,15 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::InstanceNormalization : { auto instanceNormalizationQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*instanceNormalizationQueueDescriptor, info); } case LayerType::L2Normalization : { auto l2NormalizationQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return MakeWorkloadHelper - (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); + (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); } case LayerType::LogSoftmax : { @@ -444,7 +438,6 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::LogicalBinary : { auto logicalBinaryQueueDescriptor = PolymorphicDowncast(&descriptor); - switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation) { case LogicalBinaryOperation::LogicalAnd: @@ -502,7 +495,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, { auto normalizationQueueDescriptor = PolymorphicDowncast(&descriptor); return MakeWorkloadHelper - (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); + (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); } case LayerType::Output : { @@ -589,7 +582,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::SpaceToBatchNd : { auto spaceToBatchNdQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*spaceToBatchNdQueueDescriptor, info); } case LayerType::SpaceToDepth : @@ -630,7 +623,7 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::TransposeConvolution2d : { auto transposeConvolution2dQueueDescriptor - = PolymorphicDowncast(&descriptor); + = PolymorphicDowncast(&descriptor); return std::make_unique(*transposeConvolution2dQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); @@ -638,7 +631,6 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::UnidirectionalSequenceLstm : { auto desc = PolymorphicDowncast(&descriptor); - if ((info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Float32) && (info.m_InputTensorInfos[1].GetDataType() == armnn::DataType::Float32) && (info.m_InputTensorInfos[2].GetDataType() == armnn::DataType::Float32) && @@ -658,455 +650,4 @@ std::unique_ptr NeonWorkloadFactory::CreateWorkload(LayerType type, } } -std::unique_ptr NeonWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateBatchNormalization( - const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateConvertFp16ToFp32( - const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateConvertFp32ToFp16( - const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateConvolution2d( - const Convolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return std::make_unique(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - isFastMathEnabled); -} - -std::unique_ptr NeonWorkloadFactory::CreateConvolution3d( - const Convolution3dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return std::make_unique(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - isFastMathEnabled); -} - -std::unique_ptr NeonWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateDetectionPostProcess( - const armnn::DetectionPostProcessQueueDescriptor& descriptor, const armnn::WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateDivision( - const DivisionQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateElementwiseUnary( - const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - switch(descriptor.m_Parameters.m_Operation) - { - case UnaryOperation::Abs: - { - AbsQueueDescriptor absQueueDescriptor; - absQueueDescriptor.m_Inputs = descriptor.m_Inputs; - absQueueDescriptor.m_Outputs = descriptor.m_Outputs; - - return std::make_unique(absQueueDescriptor, info); - } - case UnaryOperation::Exp: - return std::make_unique(descriptor, info); - case UnaryOperation::LogicalNot: - return std::make_unique(descriptor, info); - case UnaryOperation::Log: - return std::make_unique(descriptor, info); - case UnaryOperation::Neg: - return std::make_unique(descriptor, info); - case UnaryOperation::Rsqrt: - { - RsqrtQueueDescriptor rsqrtQueueDescriptor; - rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs; - rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs; - - return std::make_unique(rsqrtQueueDescriptor, info); - } - case UnaryOperation::Sin: - return std::make_unique(descriptor, info); - default: - return nullptr; - } -} - -std::unique_ptr NeonWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateFullyConnected( - const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr NeonWorkloadFactory::CreateGather(const armnn::GatherQueueDescriptor& descriptor, - const armnn::WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr NeonWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr NeonWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - switch(descriptor.m_Parameters.m_Operation) - { - case LogicalBinaryOperation::LogicalAnd: - return std::make_unique(descriptor, info); - case LogicalBinaryOperation::LogicalOr: - return std::make_unique(descriptor, info); - default: - return nullptr; - } -} - -std::unique_ptr NeonWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0]) - { - throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemCopy workload"); - } - - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0]) - { - throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemImport workload"); - } - - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateMultiplication( - const MultiplicationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateNormalization( - const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr NeonWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreatePrelu(const armnn::PreluQueueDescriptor &descriptor, - const armnn::WorkloadInfo &info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr NeonWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateSubtraction( - const SubtractionQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique(descriptor, info); -} - -std::unique_ptr NeonWorkloadFactory::CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor &descriptor, - const WorkloadInfo &info) const -{ - return std::make_unique(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - } // namespace armnn -- cgit v1.2.1