diff options
-rw-r--r-- | include/armnn/Version.hpp | 2 | ||||
-rw-r--r-- | include/armnn/backends/ITensorHandleFactory.hpp | 2 | ||||
-rw-r--r-- | include/armnn/backends/OptimizationViews.hpp | 3 | ||||
-rw-r--r-- | include/armnn/backends/WorkloadFactory.hpp | 346 | ||||
-rw-r--r-- | include/armnnTestUtils/MockBackend.hpp | 27 | ||||
-rw-r--r-- | src/armnn/test/CloneTests.cpp | 2 | ||||
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactory.cpp | 762 | ||||
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactoryBase.hpp | 241 | ||||
-rw-r--r-- | src/backends/cl/ClWorkloadFactory.cpp | 525 | ||||
-rw-r--r-- | src/backends/cl/ClWorkloadFactory.hpp | 308 | ||||
-rw-r--r-- | src/backends/neon/NeonWorkloadFactory.cpp | 487 | ||||
-rw-r--r-- | src/backends/neon/NeonWorkloadFactory.hpp | 308 | ||||
-rw-r--r-- | src/backends/reference/RefWorkloadFactory.cpp | 597 | ||||
-rw-r--r-- | src/backends/reference/RefWorkloadFactory.hpp | 326 |
14 files changed, 83 insertions, 3853 deletions
diff --git a/include/armnn/Version.hpp b/include/armnn/Version.hpp index 3c4abdef54..2a62c1db83 100644 --- a/include/armnn/Version.hpp +++ b/include/armnn/Version.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // diff --git a/include/armnn/backends/ITensorHandleFactory.hpp b/include/armnn/backends/ITensorHandleFactory.hpp index b10ff66783..7d582d2578 100644 --- a/include/armnn/backends/ITensorHandleFactory.hpp +++ b/include/armnn/backends/ITensorHandleFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017, 2019-2022 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // diff --git a/include/armnn/backends/OptimizationViews.hpp b/include/armnn/backends/OptimizationViews.hpp index ec1dc55156..8bb47dcc1e 100644 --- a/include/armnn/backends/OptimizationViews.hpp +++ b/include/armnn/backends/OptimizationViews.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017, 2019, 2021-2022 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017, 2019, 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -77,7 +77,6 @@ private: /// INetworkPtr object used only as a container for any layer generated by the optimization process /// Also, can use to AddPrecompiledLayer to the SubstitutionPair - /// Use in favour of m_Graph which depreciates in 23.08 INetworkPtr m_INetwork = INetwork::Create(); }; diff --git a/include/armnn/backends/WorkloadFactory.hpp b/include/armnn/backends/WorkloadFactory.hpp index e69743dced..d5ebf28ed3 100644 --- a/include/armnn/backends/WorkloadFactory.hpp +++ b/include/armnn/backends/WorkloadFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -64,354 +64,10 @@ public: virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged = true) const = 0; - virtual std::unique_ptr<IWorkload> CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const; - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess( - const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor, - const WorkloadInfo& Info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm( - const UnidirectionalSequenceLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const; - private: static bool IsLayerConfigurationSupported(const BackendId& backendId, const IConnectableLayer& connectableLayer, diff --git a/include/armnnTestUtils/MockBackend.hpp b/include/armnnTestUtils/MockBackend.hpp index 3c79e16220..9728a85398 100644 --- a/include/armnnTestUtils/MockBackend.hpp +++ b/include/armnnTestUtils/MockBackend.hpp @@ -120,33 +120,8 @@ public: return std::make_unique<MockTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc)); }; - ARMNN_DEPRECATED_MSG_REMOVAL_DATE( - "Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", - "23.08") - std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const override - { - if (info.m_InputTensorInfos.empty()) - { - throw InvalidArgumentException("MockWorkloadFactory::CreateInput: Input cannot be zero length"); - } - if (info.m_OutputTensorInfos.empty()) - { - throw InvalidArgumentException("MockWorkloadFactory::CreateInput: Output cannot be zero length"); - } - - if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes()) - { - throw InvalidArgumentException( - "MockWorkloadFactory::CreateInput: data input and output differ in byte count."); - } - - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); - }; - std::unique_ptr<IWorkload> - CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const override; + CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const override; private: mutable std::shared_ptr<MockMemoryManager> m_MemoryManager; diff --git a/src/armnn/test/CloneTests.cpp b/src/armnn/test/CloneTests.cpp index e93b989aa1..62d81bf6e5 100644 --- a/src/armnn/test/CloneTests.cpp +++ b/src/armnn/test/CloneTests.cpp @@ -44,7 +44,7 @@ public: } std::unique_ptr<armnn::IWorkload> CreatePreCompiled(const armnn::PreCompiledQueueDescriptor& descriptor, - const armnn::WorkloadInfo&) const override + const armnn::WorkloadInfo&) const { CHECK(descriptor.m_PreCompiledObject == m_Ptr); return nullptr; diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index 9ab3ca5b77..7a9e46ce7d 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -1610,769 +1610,21 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, outReasonIfUnsupported, modelOptions); } -ARMNN_NO_DEPRECATE_WARN_BEGIN + +/// Backends should implement their own CreateWorkload function with a switch statement. +/// The case for the switch should be the LayerType and based on that they will call their +/// specific workload creation functionality. std::unique_ptr<IWorkload> IWorkloadFactory::CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const { + IgnoreUnused(descriptor); + IgnoreUnused(info); switch(type) { - case LayerType::Activation : - { - auto activationQueueDescriptor = PolymorphicDowncast<const ActivationQueueDescriptor*>(&descriptor); - return CreateActivation(*activationQueueDescriptor, info); - } - case LayerType::Addition : - { - auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor); - return CreateAddition(*additionQueueDescriptor, info); - } - case LayerType::ArgMinMax : - { - auto argMinMaxQueueDescriptor = PolymorphicDowncast<const ArgMinMaxQueueDescriptor*>(&descriptor); - return CreateArgMinMax(*argMinMaxQueueDescriptor, info); - } - case LayerType::BatchNormalization : - { - auto batchNormQueueDescriptor = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor); - return CreateBatchNormalization(*batchNormQueueDescriptor, info); - } - case LayerType::BatchToSpaceNd : - { - auto batchToSpaceNdQueueDescriptor - = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); - return CreateBatchToSpaceNd(*batchToSpaceNdQueueDescriptor, info); - } - case LayerType::Cast : - { - auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor); - return CreateCast(*castQueueDescriptor, info); - } - case LayerType::ChannelShuffle : - { - auto channelShuffleQueueDescriptor - = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor); - return CreateChannelShuffle(*channelShuffleQueueDescriptor, info); - } - case LayerType::Comparison : - { - auto comparisonQueueDescriptor = PolymorphicDowncast<const ComparisonQueueDescriptor*>(&descriptor); - return CreateComparison(*comparisonQueueDescriptor, info); - } - case LayerType::Concat : - { - auto concatQueueDescriptor = PolymorphicDowncast<const ConcatQueueDescriptor*>(&descriptor); - return CreateConcat(*concatQueueDescriptor, info); - } - case LayerType::Constant : - { - auto constantQueueDescriptor = PolymorphicDowncast<const ConstantQueueDescriptor*>(&descriptor); - return CreateConstant(*constantQueueDescriptor, info); - } - case LayerType::ConvertFp16ToFp32: - { - auto convertFp16ToFp32QueueDescriptor - = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); - return CreateConvertFp16ToFp32(*convertFp16ToFp32QueueDescriptor, info); - } - case LayerType::ConvertFp32ToFp16: - { - auto convertFp32ToFp16QueueDescriptor - = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); - return CreateConvertFp32ToFp16(*convertFp32ToFp16QueueDescriptor, info); - } - case LayerType::Convolution2d: - { - auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor); - return CreateConvolution2d(*convolution2dQueueDescriptor, info); - } - case LayerType::Convolution3d: - { - auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor); - return CreateConvolution3d(*convolution3dQueueDescriptor, info); - } - case LayerType::Debug: - { - auto debugQueueDescriptor = PolymorphicDowncast<const DebugQueueDescriptor*>(&descriptor); - return CreateDebug(*debugQueueDescriptor, info); - } - case LayerType::DepthToSpace: - { - auto depthToSpaceQueueDescriptor = PolymorphicDowncast<const DepthToSpaceQueueDescriptor*>(&descriptor); - return CreateDepthToSpace(*depthToSpaceQueueDescriptor, info); - } - case LayerType::DepthwiseConvolution2d: - { - auto depthwiseConvolution2DQueueDescriptor - = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); - return CreateDepthwiseConvolution2d(*depthwiseConvolution2DQueueDescriptor, info); - } - case LayerType::Dequantize: - { - auto dequantizeQueueDescriptor = PolymorphicDowncast<const DequantizeQueueDescriptor*>(&descriptor); - return CreateDequantize(*dequantizeQueueDescriptor, info); - } - case LayerType::DetectionPostProcess: - { - auto detectionPostProcessQueueDescriptor - = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); - return CreateDetectionPostProcess(*detectionPostProcessQueueDescriptor, info); - } - case LayerType::Division: - { - auto divisionQueueDescriptor = PolymorphicDowncast<const DivisionQueueDescriptor*>(&descriptor); - return CreateDivision(*divisionQueueDescriptor, info); - } - case LayerType::ElementwiseBinary: - { - auto queueDescriptor = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); - return CreateWorkload(LayerType::ElementwiseBinary, *queueDescriptor, info); - } - case LayerType::ElementwiseUnary: - { - auto elementwiseUnaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); - return CreateElementwiseUnary(*elementwiseUnaryQueueDescriptor, info); - - } - case LayerType::FakeQuantization: - { - auto fakeQuantizationQueueDescriptor - = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor); - return CreateFakeQuantization(*fakeQuantizationQueueDescriptor, info); - } - case LayerType::Fill: - { - auto fillQueueDescriptor = PolymorphicDowncast<const FillQueueDescriptor*>(&descriptor); - return CreateFill(*fillQueueDescriptor, info); - } - case LayerType::Floor: - { - auto floorQueueDescriptor = PolymorphicDowncast<const FloorQueueDescriptor*>(&descriptor); - return CreateFloor(*floorQueueDescriptor, info); - } - case LayerType::FullyConnected: - { - auto fullyConnectedQueueDescriptor - = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor); - return CreateFullyConnected(*fullyConnectedQueueDescriptor, info); - } - case LayerType::Gather: - { - auto gatherQueueDescriptor = PolymorphicDowncast<const GatherQueueDescriptor*>(&descriptor); - return CreateGather(*gatherQueueDescriptor, info); - } - case LayerType::Input: - { - auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor); - return CreateInput(*inputQueueDescriptor, info); - } - case LayerType::InstanceNormalization: - { - auto instanceNormalizationQueueDescriptor - = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); - return CreateInstanceNormalization(*instanceNormalizationQueueDescriptor, info); - } - case LayerType::L2Normalization: - { - auto l2NormalizationQueueDescriptor - = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); - return CreateL2Normalization(*l2NormalizationQueueDescriptor, info); - } - case LayerType::LogicalBinary: - { - auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor); - return CreateLogicalBinary(*logicalBinaryQueueDescriptor, info); - } - case LayerType::LogSoftmax: - { - auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor); - return CreateLogSoftmax(*logSoftmaxQueueDescriptor, info); - } - case LayerType::Lstm: - { - auto lstmQueueDescriptor = PolymorphicDowncast<const LstmQueueDescriptor*>(&descriptor); - return CreateLstm(*lstmQueueDescriptor, info); - } - case LayerType::Maximum: - { - auto maximumQueueDescriptor = PolymorphicDowncast<const MaximumQueueDescriptor*>(&descriptor); - return CreateMaximum(*maximumQueueDescriptor, info); - } - case LayerType::Mean: - { - auto meanQueueDescriptor = PolymorphicDowncast<const MeanQueueDescriptor*>(&descriptor); - return CreateMean(*meanQueueDescriptor, info); - } - case LayerType::MemCopy: - { - auto memCopyQueueDescriptor = PolymorphicDowncast<const MemCopyQueueDescriptor*>(&descriptor); - return CreateMemCopy(*memCopyQueueDescriptor, info); - } - case LayerType::MemImport: - { - auto memImportQueueDescriptor = PolymorphicDowncast<const MemImportQueueDescriptor*>(&descriptor); - return CreateMemImport(*memImportQueueDescriptor, info); - } - case LayerType::Minimum: - { - auto minimumQueueDescriptor = PolymorphicDowncast<const MinimumQueueDescriptor*>(&descriptor); - return CreateMinimum(*minimumQueueDescriptor, info); - } - case LayerType::Multiplication: - { - auto multiplicationQueueDescriptor - = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor); - return CreateMultiplication(*multiplicationQueueDescriptor, info); - } - case LayerType::Normalization: - { - auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor); - return CreateNormalization(*normalizationQueueDescriptor, info); - } - case LayerType::Output: - { - auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor); - return CreateOutput(*outputQueueDescriptor, info); - } - case LayerType::Pad: - { - auto padQueueDescriptor = PolymorphicDowncast<const PadQueueDescriptor*>(&descriptor); - return CreatePad(*padQueueDescriptor, info); - } - case LayerType::Permute: - { - auto permuteQueueDescriptor = PolymorphicDowncast<const PermuteQueueDescriptor*>(&descriptor); - return CreatePermute(*permuteQueueDescriptor, info); - } - case LayerType::Pooling2d: - { - auto pooling2dQueueDescriptor = PolymorphicDowncast<const Pooling2dQueueDescriptor*>(&descriptor); - return CreatePooling2d(*pooling2dQueueDescriptor, info); - } - case LayerType::Pooling3d: - { - auto pooling3dQueueDescriptor = PolymorphicDowncast<const Pooling3dQueueDescriptor*>(&descriptor); - return CreatePooling3d(*pooling3dQueueDescriptor, info); - } - case LayerType::PreCompiled: - { - auto preCompiledQueueDescriptor = PolymorphicDowncast<const PreCompiledQueueDescriptor*>(&descriptor); - return CreatePreCompiled(*preCompiledQueueDescriptor, info); - } - case LayerType::Prelu: - { - auto preluQueueDescriptor = PolymorphicDowncast<const PreluQueueDescriptor*>(&descriptor); - return CreatePrelu(*preluQueueDescriptor, info); - } - case LayerType::QLstm: - { - auto qlstmQueueDescriptor = PolymorphicDowncast<const QLstmQueueDescriptor*>(&descriptor); - return CreateQLstm(*qlstmQueueDescriptor, info); - } - case LayerType::Quantize: - { - auto quantizeQueueDescriptor = PolymorphicDowncast<const QuantizeQueueDescriptor*>(&descriptor); - return CreateQuantize(*quantizeQueueDescriptor, info); - } - case LayerType::Rank: - { - auto rankQueueDescriptor = PolymorphicDowncast<const RankQueueDescriptor*>(&descriptor); - return CreateRank(*rankQueueDescriptor, info); - } - case LayerType::Reduce: - { - auto reduceQueueDescriptor = PolymorphicDowncast<const ReduceQueueDescriptor*>(&descriptor); - return CreateReduce(*reduceQueueDescriptor, info); - } - case LayerType::Reshape: - { - auto reshapeQueueDescriptor = PolymorphicDowncast<const ReshapeQueueDescriptor*>(&descriptor); - return CreateReshape(*reshapeQueueDescriptor, info); - } - case LayerType::Resize: - { - auto resizeQueueDescriptor = PolymorphicDowncast<const ResizeQueueDescriptor*>(&descriptor); - return CreateResize(*resizeQueueDescriptor, info); - } - case LayerType::Shape: - { - auto shapeQueueDescriptor = PolymorphicDowncast<const ShapeQueueDescriptor*>(&descriptor); - return CreateShape(*shapeQueueDescriptor, info); - } - case LayerType::Slice: - { - auto sliceQueueDescriptor = PolymorphicDowncast<const SliceQueueDescriptor*>(&descriptor); - return CreateSlice(*sliceQueueDescriptor, info); - } - case LayerType::Softmax: - { - auto softmaxQueueDescriptor = PolymorphicDowncast<const SoftmaxQueueDescriptor*>(&descriptor); - return CreateSoftmax(*softmaxQueueDescriptor, info); - } - case LayerType::SpaceToBatchNd: - { - auto spaceToBatchNdQueueDescriptor - = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); - return CreateSpaceToBatchNd(*spaceToBatchNdQueueDescriptor, info); - } - case LayerType::SpaceToDepth: - { - auto spaceToDepthQueueDescriptor = PolymorphicDowncast<const SpaceToDepthQueueDescriptor*>(&descriptor); - return CreateSpaceToDepth(*spaceToDepthQueueDescriptor, info); - } - case LayerType::Splitter: - { - auto splitterQueueDescriptor = PolymorphicDowncast<const SplitterQueueDescriptor*>(&descriptor); - return CreateSplitter(*splitterQueueDescriptor, info); - } - case LayerType::Stack: - { - auto stackQueueDescriptor = PolymorphicDowncast<const StackQueueDescriptor*>(&descriptor); - return CreateStack(*stackQueueDescriptor, info); - } - case LayerType::StridedSlice: - { - auto stridedSliceQueueDescriptor = PolymorphicDowncast<const StridedSliceQueueDescriptor*>(&descriptor); - return CreateStridedSlice(*stridedSliceQueueDescriptor, info); - } - case LayerType::Subtraction: - { - auto subtractionQueueDescriptor = PolymorphicDowncast<const SubtractionQueueDescriptor*>(&descriptor); - return CreateSubtraction(*subtractionQueueDescriptor, info); - } - case LayerType::Transpose: - { - auto transposeQueueDescriptor = PolymorphicDowncast<const TransposeQueueDescriptor*>(&descriptor); - return CreateTranspose(*transposeQueueDescriptor, info); - } - case LayerType::TransposeConvolution2d: - { - auto transposeConvolution2dQueueDescriptor - = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); - return CreateTransposeConvolution2d(*transposeConvolution2dQueueDescriptor, info); - } - case LayerType::UnidirectionalSequenceLstm: - { - auto unidirectionalSequenceLstmQueueDescriptor - = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor); - return CreateUnidirectionalSequenceLstm(*unidirectionalSequenceLstmQueueDescriptor, info); - } default: - return nullptr; + return std::unique_ptr<IWorkload>(); } } -ARMNN_NO_DEPRECATE_WARN_END - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateBatchNormalization( - const BatchNormalizationQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*desc*/, - const WorkloadInfo& /*Info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateCast(const CastQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDebug(const DebugQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDequantize( - const DequantizeQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDetectionPostProcess( - const DetectionPostProcessQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateFill(const FillQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateFloor(const FloorQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateGather(const GatherQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& /*desc*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateLstm(const LstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMean(const MeanQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*Info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMerge(const MergeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateOutput(const OutputQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePad(const PadQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*Info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePooling3d(const Pooling3dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreatePrelu(const PreluQueueDescriptor &/*descriptor*/, - const WorkloadInfo &/*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*Info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} -std::unique_ptr<IWorkload> IWorkloadFactory::CreateRank(const RankQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateResize(const ResizeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateShape(const ShapeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSlice(const SliceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateStack(const StackQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateUnidirectionalSequenceLstm( - const UnidirectionalSequenceLstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} - -std::unique_ptr<IWorkload> IWorkloadFactory::CreateInput( - const InputQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return std::unique_ptr<IWorkload>(); -} } // namepsace armnn diff --git a/src/backends/backendsCommon/WorkloadFactoryBase.hpp b/src/backends/backendsCommon/WorkloadFactoryBase.hpp index 00e549c933..6c839323e6 100644 --- a/src/backends/backendsCommon/WorkloadFactoryBase.hpp +++ b/src/backends/backendsCommon/WorkloadFactoryBase.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019, 2023 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // @@ -21,9 +21,6 @@ public: unsigned int const */*subTensorOrigin*/) const override { return nullptr; }; - std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/, const bool /*IsMemoryManaged*/) const override @@ -39,242 +36,6 @@ public: const WorkloadInfo& /*info*/) const override { return nullptr; } - std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const override - { - if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot) - { - return CreateWorkload(armnn::LayerType::ElementwiseUnary, descriptor, info); - } - else - { - { return nullptr; } - } - } - - std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } - - std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const override - { return nullptr; } }; } //namespace armnn
\ No newline at end of file diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp index 493080f7af..7b4e9be908 100644 --- a/src/backends/cl/ClWorkloadFactory.cpp +++ b/src/backends/cl/ClWorkloadFactory.cpp @@ -273,14 +273,14 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::BatchNormalization : { auto batchNormalizationQueueDescriptor - = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor); return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload> - (*batchNormalizationQueueDescriptor, info, m_CLCompileContext); + (*batchNormalizationQueueDescriptor, info, m_CLCompileContext); } case LayerType::BatchToSpaceNd : { auto batchToSpaceNdQueueDescriptor - = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); return MakeWorkload<ClBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info, m_CLCompileContext); } case LayerType::Cast : @@ -291,7 +291,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ChannelShuffle : { auto channelShuffleQueueDescriptor - = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor); return MakeWorkload<ClChannelShuffleWorkload>(*channelShuffleQueueDescriptor, info, m_CLCompileContext); } case LayerType::Comparison : @@ -312,7 +312,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ConvertFp16ToFp32 : { auto convertFp16ToFp32QueueDescriptor - = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); return MakeWorkload<ClConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor, info, m_CLCompileContext); @@ -320,7 +320,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ConvertFp32ToFp16 : { auto convertFp32ToFp16QueueDescriptor - = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); return MakeWorkload<ClConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor, info, m_CLCompileContext); @@ -328,7 +328,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Convolution2d : { auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -350,7 +349,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Convolution3d : { auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -382,7 +380,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DepthwiseConvolution2d : { auto depthwiseConvolution2dQueueDescriptor - = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); return MakeWorkload<ClDepthwiseConvolutionWorkload>(*depthwiseConvolution2dQueueDescriptor, info, m_CLCompileContext); @@ -395,7 +393,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DetectionPostProcess : { auto detectionPostProcessQueueDescriptor - = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); return MakeWorkload<NullWorkload, NullWorkload>(*detectionPostProcessQueueDescriptor, info, m_CLCompileContext); @@ -408,53 +406,52 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseBinary : { auto elementwiseBinaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); - + = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation) { case BinaryOperation::Add: { AdditionQueueDescriptor additionQueueDescriptor; - additionQueueDescriptor.m_Inputs = descriptor.m_Inputs; + additionQueueDescriptor.m_Inputs = descriptor.m_Inputs; additionQueueDescriptor.m_Outputs = descriptor.m_Outputs; additionQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClAdditionWorkload>(additionQueueDescriptor, info, m_CLCompileContext); } case BinaryOperation::Div: { DivisionQueueDescriptor divisionQueueDescriptor; - divisionQueueDescriptor.m_Inputs = descriptor.m_Inputs; + divisionQueueDescriptor.m_Inputs = descriptor.m_Inputs; divisionQueueDescriptor.m_Outputs = descriptor.m_Outputs; divisionQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClDivisionWorkload>(divisionQueueDescriptor, info, m_CLCompileContext); } case BinaryOperation::Maximum: { MaximumQueueDescriptor maximumQueueDescriptor; - maximumQueueDescriptor.m_Inputs = descriptor.m_Inputs; + maximumQueueDescriptor.m_Inputs = descriptor.m_Inputs; maximumQueueDescriptor.m_Outputs = descriptor.m_Outputs; maximumQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClMaximumWorkload>(maximumQueueDescriptor, info, m_CLCompileContext); } case BinaryOperation::Minimum: { MinimumQueueDescriptor minimumQueueDescriptor; - minimumQueueDescriptor.m_Inputs = descriptor.m_Inputs; + minimumQueueDescriptor.m_Inputs = descriptor.m_Inputs; minimumQueueDescriptor.m_Outputs = descriptor.m_Outputs; minimumQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClMinimumWorkload>(minimumQueueDescriptor, info, m_CLCompileContext); } case BinaryOperation::Mul: { MultiplicationQueueDescriptor multiplicationQueueDescriptor; - multiplicationQueueDescriptor.m_Inputs = descriptor.m_Inputs; + multiplicationQueueDescriptor.m_Inputs = descriptor.m_Inputs; multiplicationQueueDescriptor.m_Outputs = descriptor.m_Outputs; multiplicationQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClMultiplicationWorkload>(multiplicationQueueDescriptor, info, m_CLCompileContext); @@ -469,10 +466,10 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case BinaryOperation::Sub: { SubtractionQueueDescriptor subtractionQueueDescriptor; - subtractionQueueDescriptor.m_Inputs = descriptor.m_Inputs; + subtractionQueueDescriptor.m_Inputs = descriptor.m_Inputs; subtractionQueueDescriptor.m_Outputs = descriptor.m_Outputs; subtractionQueueDescriptor.m_AdditionalInfoObject = - elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; + elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject; return std::make_unique<ClSubtractionWorkload>(subtractionQueueDescriptor, info, m_CLCompileContext); @@ -484,8 +481,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseUnary : { auto elementwiseUnaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); - + = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation) { case UnaryOperation::Abs: @@ -493,7 +489,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, AbsQueueDescriptor absQueueDescriptor; absQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; absQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext); } case UnaryOperation::Exp: @@ -511,7 +506,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, RsqrtQueueDescriptor rsqrtQueueDescriptor; rsqrtQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; rsqrtQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext); } case UnaryOperation::Sin: @@ -535,7 +529,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::FullyConnected : { auto fullyConnectedQueueDescriptor - = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor); return MakeWorkload<ClFullyConnectedWorkload>(*fullyConnectedQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager(), @@ -559,7 +553,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::InstanceNormalization : { auto instanceNormalizationQueueDescriptor - = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); return MakeWorkload<ClInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor, info, m_CLCompileContext); @@ -567,7 +561,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::L2Normalization : { auto l2NormalizationQueueDescriptor - = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(*l2NormalizationQueueDescriptor, info, m_CLCompileContext); @@ -575,7 +569,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::LogicalBinary : { auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor); - switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation) { case LogicalBinaryOperation::LogicalAnd: @@ -593,7 +586,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::LogSoftmax : { auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor); - return MakeWorkload<ClLogSoftmaxWorkload>(*logSoftmaxQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager(), @@ -735,7 +727,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::SpaceToBatchNd : { auto spaceToBatchNdQueueDescriptor - = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); return MakeWorkload<ClSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info, m_CLCompileContext); } case LayerType::SpaceToDepth : @@ -771,7 +763,7 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, case LayerType::TransposeConvolution2d : { auto transposeConvolution2dQueueDescriptor - = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); return MakeWorkload<ClTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager(), @@ -789,469 +781,6 @@ std::unique_ptr<IWorkload> ClWorkloadFactory::CreateWorkload(LayerType type, } } -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClActivationWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClAdditionWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClArgMinMaxWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateBatchNormalization( - const BatchNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClBatchToSpaceNdWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClCastWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClChannelShuffleWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClComparisonWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClConcatWorkload>(descriptor, info, m_CLCompileContext); -} -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClConstantWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvertFp16ToFp32( - const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClConvertFp16ToFp32Workload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvertFp32ToFp16( - const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClConvertFp32ToFp16Workload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return MakeWorkload<ClConvolution2dWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext, - isFastMathEnabled); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return MakeWorkload<ClConvolution3dWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext, - isFastMathEnabled); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClDepthToSpaceWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClDepthwiseConvolutionWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClDequantizeWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDetectionPostProcess( - const DetectionPostProcessQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClDivisionWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::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<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext); - } - case UnaryOperation::Exp: - return std::make_unique<ClExpWorkload>(descriptor, info, m_CLCompileContext); - case UnaryOperation::Log: - return std::make_unique<ClLogWorkload>(descriptor, info, m_CLCompileContext); - case UnaryOperation::LogicalNot: - return std::make_unique<ClLogicalNotWorkload>(descriptor, info, m_CLCompileContext); - case UnaryOperation::Neg: - return std::make_unique<ClNegWorkload>(descriptor, info, m_CLCompileContext); - case UnaryOperation::Rsqrt: - { - RsqrtQueueDescriptor rsqrtQueueDescriptor; - rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs; - rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs; - - return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext); - } - case UnaryOperation::Sin: - return std::make_unique<ClSinWorkload>(descriptor, info, m_CLCompileContext); - default: - return nullptr; - } -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClFillWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClFloorFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClFullyConnectedWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateGather(const GatherQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClGatherWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClInstanceNormalizationWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - switch(descriptor.m_Parameters.m_Operation) - { - case LogicalBinaryOperation::LogicalAnd: - return std::make_unique<ClLogicalAndWorkload>(descriptor, info, m_CLCompileContext); - case LogicalBinaryOperation::LogicalOr: - return std::make_unique<ClLogicalOrWorkload>(descriptor, info, m_CLCompileContext); - default: - return nullptr; - } -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClLogSoftmaxWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClLstmFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClMaximumWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClMeanWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0]) - { - throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemCopy workload"); - } - - return MakeWorkload<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0]) - { - throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemImport workload"); - } - - return std::make_unique<ImportMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClMinimumWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClMultiplicationWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClPadWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClPermuteWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClPooling2dWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePrelu(const PreluQueueDescriptor &descriptor, - const WorkloadInfo &info) const -{ - return MakeWorkload<ClPreluWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClQLstmWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClQuantizeWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClQuantizedLstmWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClRankWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClReduceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClReshapeWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClResizeWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClSliceWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<ClSoftmaxWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClSpaceToBatchNdWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClSpaceToDepthWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClSplitterWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClStackWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClStridedSliceWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClSubtractionWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClTransposeWorkload>(descriptor, info, m_CLCompileContext); -} - -std::unique_ptr<IWorkload> ClWorkloadFactory::CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<ClTransposeConvolution2dWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - m_CLCompileContext); -} } // namespace armnn diff --git a/src/backends/cl/ClWorkloadFactory.hpp b/src/backends/cl/ClWorkloadFactory.hpp index c4e49eebb4..d8e08d5556 100644 --- a/src/backends/cl/ClWorkloadFactory.hpp +++ b/src/backends/cl/ClWorkloadFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -54,316 +54,10 @@ public: std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo, DataLayout dataLayout, const bool IsMemoryManaged = true) const override; - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const override; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const override; - private: template<typename FloatWorkload, typename Uint8Workload, typename QueueDescriptorType, typename... Args> static std::unique_ptr<IWorkload> MakeWorkload(const QueueDescriptorType& descriptor, 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<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::BatchNormalization : { auto batchNormalizationQueueDescriptor - = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor); return std::make_unique<NeonBatchNormalizationWorkload>(*batchNormalizationQueueDescriptor, info); } case LayerType::BatchToSpaceNd : { auto batchToSpaceNdQueueDescriptor - = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); return std::make_unique<NeonBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info); } case LayerType::Cast : @@ -209,19 +209,18 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ConvertFp16ToFp32 : { auto convertFp16ToFp32QueueDescriptor - = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); return std::make_unique<NeonConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor, info); } case LayerType::ConvertFp32ToFp16 : { auto convertFp32ToFp16QueueDescriptor - = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); return std::make_unique<NeonConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor, info); } case LayerType::Convolution2d : { auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -242,7 +241,6 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Convolution3d : { auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor); - bool isFastMathEnabled = false; if (m_ModelContextPtr) { @@ -273,7 +271,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DepthwiseConvolution2d : { auto depthwiseConvolution2dQueueDescriptor - = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); return std::make_unique<NeonDepthwiseConvolutionWorkload>(*depthwiseConvolution2dQueueDescriptor, info); } case LayerType::Dequantize : @@ -284,7 +282,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DetectionPostProcess : { auto detectionPostProcessQueueDescriptor - = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); return MakeWorkloadHelper<NullWorkload, NullWorkload>(*detectionPostProcessQueueDescriptor, info); } case LayerType::Division : @@ -295,8 +293,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseBinary : { auto elementwiseBinaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); - + = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation) { case BinaryOperation::Add: @@ -353,8 +350,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseUnary : { auto elementwiseUnaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); - + = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation) { case UnaryOperation::Abs: @@ -362,7 +358,6 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, AbsQueueDescriptor absQueueDescriptor; absQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; absQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info); } case UnaryOperation::Exp: @@ -378,7 +373,6 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, RsqrtQueueDescriptor rsqrtQueueDescriptor; rsqrtQueueDescriptor.m_Inputs = elementwiseUnaryQueueDescriptor->m_Inputs; rsqrtQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs; - return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info); } case UnaryOperation::Sin: @@ -424,15 +418,15 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::InstanceNormalization : { auto instanceNormalizationQueueDescriptor - = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); return std::make_unique<NeonInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor, info); } case LayerType::L2Normalization : { auto l2NormalizationQueueDescriptor - = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); return MakeWorkloadHelper<NeonL2NormalizationFloatWorkload, NullWorkload> - (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); + (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); } case LayerType::LogSoftmax : { @@ -444,7 +438,6 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::LogicalBinary : { auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor); - switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation) { case LogicalBinaryOperation::LogicalAnd: @@ -502,7 +495,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, { auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor); return MakeWorkloadHelper<NeonNormalizationFloatWorkload, NullWorkload> - (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); + (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); } case LayerType::Output : { @@ -589,7 +582,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::SpaceToBatchNd : { auto spaceToBatchNdQueueDescriptor - = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); return std::make_unique<NeonSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info); } case LayerType::SpaceToDepth : @@ -630,7 +623,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::TransposeConvolution2d : { auto transposeConvolution2dQueueDescriptor - = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); return std::make_unique<NeonTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager()); @@ -638,7 +631,6 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, case LayerType::UnidirectionalSequenceLstm : { auto desc = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&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<IWorkload> NeonWorkloadFactory::CreateWorkload(LayerType type, } } -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonActivationWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonAdditionWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonArgMinMaxWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateBatchNormalization( - const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonBatchNormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonBatchToSpaceNdWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonCastWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonChannelShuffleWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonComparisonWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonConcatWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonConstantWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConvertFp16ToFp32( - const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonConvertFp16ToFp32Workload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConvertFp32ToFp16( - const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonConvertFp32ToFp16Workload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConvolution2d( - const Convolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return std::make_unique<NeonConvolution2dWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - isFastMathEnabled); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConvolution3d( - const Convolution3dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - bool isFastMathEnabled = false; - if (m_ModelContextPtr) - { - if (m_ModelContextPtr.get() != nullptr) - { - auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get()); - if (modelOptions) - { - isFastMathEnabled = modelOptions->IsFastMathEnabled(); - } - } - } - return std::make_unique<NeonConvolution3dWorkload>(descriptor, - info, - m_MemoryManager->GetIntraLayerManager(), - isFastMathEnabled); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonDepthToSpaceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonDepthwiseConvolutionWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonDequantizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDetectionPostProcess( - const armnn::DetectionPostProcessQueueDescriptor& descriptor, const armnn::WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateDivision( - const DivisionQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonDivisionWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> 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<NeonAbsWorkload>(absQueueDescriptor, info); - } - case UnaryOperation::Exp: - return std::make_unique<NeonExpWorkload>(descriptor, info); - case UnaryOperation::LogicalNot: - return std::make_unique<NeonLogicalNotWorkload>(descriptor, info); - case UnaryOperation::Log: - return std::make_unique<NeonLogWorkload>(descriptor, info); - case UnaryOperation::Neg: - return std::make_unique<NeonNegWorkload>(descriptor, info); - case UnaryOperation::Rsqrt: - { - RsqrtQueueDescriptor rsqrtQueueDescriptor; - rsqrtQueueDescriptor.m_Inputs = descriptor.m_Inputs; - rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs; - - return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info); - } - case UnaryOperation::Sin: - return std::make_unique<NeonSinWorkload>(descriptor, info); - default: - return nullptr; - } -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonFillWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NeonFloorFloatWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateFullyConnected( - const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonFullyConnectedWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateGather(const armnn::GatherQueueDescriptor& descriptor, - const armnn::WorkloadInfo& info) const -{ - return std::make_unique<NeonGatherWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonInstanceNormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NeonL2NormalizationFloatWorkload, NullWorkload>(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonLogSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - switch(descriptor.m_Parameters.m_Operation) - { - case LogicalBinaryOperation::LogicalAnd: - return std::make_unique<NeonLogicalAndWorkload>(descriptor, info); - case LogicalBinaryOperation::LogicalOr: - return std::make_unique<NeonLogicalOrWorkload>(descriptor, info); - default: - return nullptr; - } -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NeonLstmFloatWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonMaximumWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonMeanWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> 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<CopyMemGenericWorkload, CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> 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<ImportMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonMinimumWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMultiplication( - const MultiplicationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonMultiplicationWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateNormalization( - const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NeonNormalizationFloatWorkload, NullWorkload>(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonPadWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonPermuteWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonPooling2dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePrelu(const armnn::PreluQueueDescriptor &descriptor, - const armnn::WorkloadInfo &info) const -{ - return std::make_unique<NeonPreluWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonQLstmWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonQuantizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonQuantizedLstmWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonRankWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonReduceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonReshapeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonResizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonSliceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager()); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonSpaceToBatchNdWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonSpaceToDepthWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonSplitterWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonStackWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonStridedSliceWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateSubtraction( - const SubtractionQueueDescriptor& descriptor, const WorkloadInfo& info) const -{ - return std::make_unique<NeonSubtractionWorkload>(descriptor, info); -} - -std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<NeonTransposeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor &descriptor, - const WorkloadInfo &info) const -{ - return std::make_unique<NeonTransposeConvolution2dWorkload>(descriptor, info, - m_MemoryManager->GetIntraLayerManager()); -} - } // namespace armnn diff --git a/src/backends/neon/NeonWorkloadFactory.hpp b/src/backends/neon/NeonWorkloadFactory.hpp index e4f545900a..bb7a11c08b 100644 --- a/src/backends/neon/NeonWorkloadFactory.hpp +++ b/src/backends/neon/NeonWorkloadFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -55,312 +55,6 @@ public: std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const override; - - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const override; - private: void SetNumberOfThreads(); diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp index 86a584452d..fa2082d4f2 100644 --- a/src/backends/reference/RefWorkloadFactory.cpp +++ b/src/backends/reference/RefWorkloadFactory.cpp @@ -3,15 +3,16 @@ // SPDX-License-Identifier: MIT // #include <Layer.hpp> -#include <armnn/backends/MemCopyWorkload.hpp> + #include <backendsCommon/MemImportWorkload.hpp> #include <backendsCommon/MakeWorkloadHelper.hpp> +#include <armnn/backends/MemCopyWorkload.hpp> #include <armnn/backends/TensorHandle.hpp> + #include "RefWorkloadFactory.hpp" #include "RefBackendId.hpp" -#include "workloads/RefWorkloads.hpp" #include "RefTensorHandle.hpp" - +#include "workloads/RefWorkloads.hpp" namespace armnn { @@ -25,7 +26,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::MakeWorkload(const QueueDescripto const WorkloadInfo& info) const { return MakeWorkloadHelper<NullWorkload, F32Workload, U8Workload, NullWorkload, NullWorkload, NullWorkload> - (descriptor, info); + (descriptor, info); } template <DataType ArmnnType> @@ -44,37 +45,30 @@ bool IsDataType(const WorkloadInfo& info) } return false; } - bool IsSigned32(const WorkloadInfo& info) { return IsDataType<DataType::Signed32>(info); } - bool IsBFloat16(const WorkloadInfo& info) { return IsDataType<DataType::BFloat16>(info); } - bool IsFloat16(const WorkloadInfo& info) { return IsDataType<DataType::Float16>(info); } - bool IsQSymmS16(const WorkloadInfo& info) { return IsDataType<DataType::QSymmS16>(info); } - bool IsQSymmS8(const WorkloadInfo& info) { return IsDataType<DataType::QSymmS8>(info); } - bool IsQAsymmS8(const WorkloadInfo& info) { return IsDataType<DataType::QAsymmS8>(info); } - bool IsQAsymmU8(const WorkloadInfo& info) { return IsDataType<DataType::QAsymmU8>(info); @@ -155,7 +149,6 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Addition : { auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor); - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) { return std::make_unique<RefAdditionWorkload<int32_t>>(*additionQueueDescriptor, info); @@ -183,9 +176,9 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::BatchToSpaceNd : { auto batchToSpaceNdQueueDescriptor - = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor); return std::make_unique<RefBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info); - } + } case LayerType::Cast : { auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor); @@ -194,7 +187,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ChannelShuffle : { auto channelShuffleQueueDescriptor - = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor); return std::make_unique<RefChannelShuffleWorkload>(*channelShuffleQueueDescriptor, info); } case LayerType::Comparison : @@ -215,13 +208,13 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ConvertFp16ToFp32: { auto convertFp16ToFp32QueueDescriptor - = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor); return std::make_unique<RefConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor, info); } case LayerType::ConvertFp32ToFp16: { auto convertFp32ToFp16QueueDescriptor - = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor); return std::make_unique<RefConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor, info); } case LayerType::Convolution2d: @@ -265,7 +258,6 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, { return std::make_unique<RefDebugSigned32Workload>(*debugQueueDescriptor, info); } - return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(*debugQueueDescriptor, info); } case LayerType::DepthToSpace: @@ -276,7 +268,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DepthwiseConvolution2d: { auto depthwiseConvolution2DQueueDescriptor - = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor); return std::make_unique<RefDepthwiseConvolution2dWorkload>(*depthwiseConvolution2DQueueDescriptor, info); } case LayerType::Dequantize: @@ -287,7 +279,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::DetectionPostProcess: { auto detectionPostProcessQueueDescriptor - = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor); return std::make_unique<RefDetectionPostProcessWorkload>(*detectionPostProcessQueueDescriptor, info); } case LayerType::Division: @@ -305,13 +297,13 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::ElementwiseBinary: { auto elementwiseBinaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor); return std::make_unique<RefElementwiseBinaryWorkload>(*elementwiseBinaryQueueDescriptor, info); } case LayerType::ElementwiseUnary: { auto elementwiseUnaryQueueDescriptor - = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor); if ((*elementwiseUnaryQueueDescriptor).m_Parameters.m_Operation == UnaryOperation::LogicalNot) { return std::make_unique<RefLogicalUnaryWorkload>(*elementwiseUnaryQueueDescriptor, info); @@ -321,7 +313,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::FakeQuantization: { auto fakeQuantizationQueueDescriptor - = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor); return std::make_unique<RefFakeQuantizationFloat32Workload>(*fakeQuantizationQueueDescriptor, info); } case LayerType::Fill: @@ -344,7 +336,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::FullyConnected: { auto fullyConnectedQueueDescriptor - = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor); return std::make_unique<RefFullyConnectedWorkload>(*fullyConnectedQueueDescriptor, info); } case LayerType::Gather: @@ -368,25 +360,23 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, { 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<CopyMemGenericWorkload>(*inputQueueDescriptor, info); } case LayerType::InstanceNormalization: { auto instanceNormalizationQueueDescriptor - = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor); return std::make_unique<RefInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor, info); } case LayerType::L2Normalization: { auto l2NormalizationQueueDescriptor - = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor); return std::make_unique<RefL2NormalizationWorkload>(*l2NormalizationQueueDescriptor, info); } case LayerType::LogicalBinary: @@ -454,7 +444,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::Multiplication: { auto multiplicationQueueDescriptor - = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor); if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) { return std::make_unique<RefMultiplicationWorkload<int32_t>>(*multiplicationQueueDescriptor, info); @@ -485,7 +475,6 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output " "differ in byte count."); } - return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor, info); } case LayerType::Pad: @@ -509,7 +498,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, return std::make_unique<RefPermuteQAsymmS8Workload>(*permuteQueueDescriptor, info); } return MakeWorkloadHelper<RefPermuteFloat16Workload, RefPermuteFloat32Workload, RefPermuteQAsymm8Workload, - NullWorkload, NullWorkload, NullWorkload>(*permuteQueueDescriptor, info); + NullWorkload, NullWorkload, NullWorkload>(*permuteQueueDescriptor, info); } case LayerType::Pooling2d: { @@ -583,7 +572,7 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, case LayerType::SpaceToBatchNd: { auto spaceToBatchNdQueueDescriptor - = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor); return std::make_unique<RefSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info); } case LayerType::SpaceToDepth: @@ -639,19 +628,19 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, return std::make_unique<RefTransposeQAsymmS8Workload>(*transposeQueueDescriptor, info); } return MakeWorkloadHelper<RefTransposeFloat16Workload, RefTransposeFloat32Workload, - RefTransposeQAsymm8Workload, NullWorkload, NullWorkload, NullWorkload> - (*transposeQueueDescriptor, info); + RefTransposeQAsymm8Workload, NullWorkload, NullWorkload, NullWorkload> + (*transposeQueueDescriptor, info); } case LayerType::TransposeConvolution2d: { auto transposeConvolution2dQueueDescriptor - = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor); return std::make_unique<RefTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor, info); } case LayerType::UnidirectionalSequenceLstm: { auto unidirectionalSequenceLstmQueueDescriptor - = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor); + = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor); return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(*unidirectionalSequenceLstmQueueDescriptor, info); } @@ -660,540 +649,4 @@ std::unique_ptr<IWorkload> RefWorkloadFactory::CreateWorkload(LayerType type, } } -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefActivationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefAdditionWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefAdditionWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefArgMinMaxWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateBatchNormalization( - const BatchNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefBatchNormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefBatchToSpaceNdWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefCastWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor &descriptor, - const WorkloadInfo &info) const -{ - return std::make_unique<RefChannelShuffleWorkload>(descriptor,info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefComparisonWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConcatWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConstantWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvertFp16ToFp32( - const ConvertFp16ToFp32QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConvertFp16ToFp32Workload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvertFp32ToFp16( - const ConvertFp32ToFp16QueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConvertFp32ToFp16Workload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConvolution2dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefConvolution3dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (IsBFloat16(info)) - { - return std::make_unique<RefDebugBFloat16Workload>(descriptor, info); - } - if (IsFloat16(info)) - { - return std::make_unique<RefDebugFloat16Workload>(descriptor, info); - } - if (IsQSymmS16(info)) - { - return std::make_unique<RefDebugQSymmS16Workload>(descriptor, info); - } - if (IsQSymmS8(info)) - { - return std::make_unique<RefDebugQSymmS8Workload>(descriptor, info); - } - if (IsQAsymmU8(info)) - { - return std::make_unique<RefDebugQAsymmU8Workload>(descriptor, info); - } - if (IsQAsymmS8(info)) - { - return std::make_unique<RefDebugQAsymmS8Workload>(descriptor, info); - } - if (IsSigned32(info)) - { - return std::make_unique<RefDebugSigned32Workload>(descriptor, info); - } - - return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefDepthToSpaceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDepthwiseConvolution2d( - const DepthwiseConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefDepthwiseConvolution2dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefDequantizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDetectionPostProcess( - const DetectionPostProcessQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefDetectionPostProcessWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefDivisionWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefDivisionWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot) - { - return std::make_unique<RefLogicalUnaryWorkload>(descriptor, info); - } - return std::make_unique<RefElementwiseUnaryWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return MakeWorkload<RefFakeQuantizationFloat32Workload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefFillWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if(IsQuantizedType(info.m_InputTensorInfos[0].GetDataType())) - { - return nullptr; - } - else - { - return std::make_unique<RefFloorWorkload>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFullyConnected( - const FullyConnectedQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefFullyConnectedWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateGather(const GatherQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefGatherWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - 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<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateInstanceNormalization( - const InstanceNormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefInstanceNormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefL2NormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefLogicalBinaryWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefLogSoftmaxWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefLstmWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefMaximumWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefMaximumWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefMeanWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty()) - { - throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor."); - } - return std::make_unique<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (descriptor.m_Inputs.empty()) - { - throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor."); - } - return std::make_unique<ImportMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefMinimumWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefMinimumWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefMultiplicationWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefMultiplicationWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefNormalizationWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - 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<CopyMemGenericWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefPadWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (IsQSymmS16(info)) - { - return std::make_unique<RefPermuteQSymm16Workload>(descriptor, info); - } - else if (IsBFloat16(info)) - { - return std::make_unique<RefPermuteBFloat16Workload>(descriptor, info); - } - else if (IsQAsymmS8(info)) - { - return std::make_unique<RefPermuteQAsymmS8Workload>(descriptor, info); - } - return MakeWorkloadHelper<RefPermuteFloat16Workload, RefPermuteFloat32Workload, RefPermuteQAsymm8Workload, - NullWorkload, NullWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefPooling2dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePooling3d(const Pooling3dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefPooling3dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/, - const WorkloadInfo& /*info*/) const -{ - return nullptr; -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePrelu(const PreluQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefPreluWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefQLstmWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefQuantizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefRankWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefReduceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefReshapeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefResizeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateShape(const ShapeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefShapeWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefSliceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefSoftmaxWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefSpaceToBatchNdWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefSpaceToDepthWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefSplitterWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefStackWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefStridedSliceWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32) - { - return std::make_unique<RefSubtractionWorkload<int32_t>>(descriptor, info); - } - else - { - return std::make_unique<RefSubtractionWorkload<float>>(descriptor, info); - } -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - if (IsQSymmS16(info)) - { - return std::make_unique<RefTransposeQSymm16Workload>(descriptor, info); - } - else if (IsBFloat16(info)) - { - return std::make_unique<RefTransposeBFloat16Workload>(descriptor, info); - } - else if (IsQAsymmS8(info)) - { - return std::make_unique<RefTransposeQAsymmS8Workload>(descriptor, info); - } - return MakeWorkloadHelper<RefTransposeFloat16Workload, RefTransposeFloat32Workload, RefTransposeQAsymm8Workload, - NullWorkload, NullWorkload, NullWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateTransposeConvolution2d( - const TransposeConvolution2dQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefTransposeConvolution2dWorkload>(descriptor, info); -} - -std::unique_ptr<IWorkload> RefWorkloadFactory::CreateUnidirectionalSequenceLstm( - const UnidirectionalSequenceLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const -{ - return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(descriptor, info);; -} - } // namespace armnn diff --git a/src/backends/reference/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp index 22dc35a8c8..ec7c62ba11 100644 --- a/src/backends/reference/RefWorkloadFactory.hpp +++ b/src/backends/reference/RefWorkloadFactory.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -16,13 +16,10 @@ namespace armnn template <typename QueueDescriptorType> constexpr bool IsOperationQueueDescriptor(const QueueDescriptorType&) { return true; } - template <> constexpr bool IsOperationQueueDescriptor(const MemCopyQueueDescriptor&) { return false; } - template <> constexpr bool IsOperationQueueDescriptor(const ConstantQueueDescriptor&) { return false; } - template <> constexpr bool IsOperationQueueDescriptor(const PermuteQueueDescriptor&) { return false; } @@ -70,327 +67,6 @@ public: const QueueDescriptor& descriptor, const WorkloadInfo& info) const override; - ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable " - "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> 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.", "23.08") - std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm( - const UnidirectionalSequenceLstmQueueDescriptor& descriptor, - const WorkloadInfo& info) const override; - private: template <typename F32Workload, typename U8Workload, typename QueueDescriptorType> std::unique_ptr<IWorkload> MakeWorkload(const QueueDescriptorType& descriptor, const WorkloadInfo& info) const; |