From e3803eae5f8866e536b399ef0003df8d2b6cb03d Mon Sep 17 00:00:00 2001 From: Derek Lamberti Date: Wed, 13 Nov 2019 10:36:08 +0000 Subject: CL & Neon workload factories inherit from WorkloadFactoryBase Change-Id: I1f694be7ef1d333b5ef9b60ea7029454ade02628 Signed-off-by: Derek Lamberti --- src/backends/backendsCommon/CMakeLists.txt | 1 + .../backendsCommon/WorkloadFactoryBase.hpp | 256 +++++++++++++++++++++ src/backends/cl/ClWorkloadFactory.hpp | 3 +- src/backends/neon/NeonWorkloadFactory.hpp | 3 +- 4 files changed, 261 insertions(+), 2 deletions(-) create mode 100644 src/backends/backendsCommon/WorkloadFactoryBase.hpp diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index d4947943ae..8c1cdce587 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -39,6 +39,7 @@ list(APPEND armnnBackendsCommon_sources WorkloadData.hpp WorkloadFactory.cpp WorkloadFactory.hpp + WorkloadFactoryBase.hpp Workload.hpp WorkloadInfo.hpp WorkloadUtils.cpp diff --git a/src/backends/backendsCommon/WorkloadFactoryBase.hpp b/src/backends/backendsCommon/WorkloadFactoryBase.hpp new file mode 100644 index 0000000000..6f7437413a --- /dev/null +++ b/src/backends/backendsCommon/WorkloadFactoryBase.hpp @@ -0,0 +1,256 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "WorkloadFactory.hpp" + +namespace armnn +{ + +class WorkloadFactoryBase : public IWorkloadFactory +{ +public: + bool SupportsSubTensors() const override + { return false; }; + + std::unique_ptr CreateSubTensorHandle(ITensorHandle& parent, TensorShape const& subTensorShape, + unsigned int const *subTensorOrigin) const override + { return nullptr; }; + + std::unique_ptr CreateInput(const InputQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateTensorHandle(const TensorInfo& tensorInfo, + const bool IsMemoryManaged = true) const override + { return nullptr; } + + std::unique_ptr CreateTensorHandle(const TensorInfo& tensorInfo, DataLayout dataLayout, + const bool IsMemoryManaged = true) const override + { return nullptr; } + + std::unique_ptr CreateAbs(const AbsQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateActivation(const ActivationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateAddition(const AdditionQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreateComparison(const ComparisonQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreateConcat(const ConcatQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateConstant(const ConstantQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDebug(const DebugQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDequantize(const DequantizeQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateDivision(const DivisionQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateFloor(const FloorQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateGather(const GatherQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateLstm(const LstmQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMaximum(const MaximumQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMean(const MeanQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreateMemCopy(const MemCopyQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMemImport(const MemImportQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMerge(const MergeQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMinimum(const MinimumQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateMultiplication(const MultiplicationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateNormalization(const NormalizationQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateOutput(const OutputQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreatePad(const PadQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreatePermute(const PermuteQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreatePooling2d(const Pooling2dQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreatePrelu(const PreluQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateQuantize(const QuantizeQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateReshape(const ReshapeQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateResize(const ResizeQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateRsqrt(const RsqrtQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSlice(const SliceQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSoftmax(const SoftmaxQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSubtraction(const SubtractionQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateSplitter(const SplitterQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateStack(const StackQueueDescriptor& descriptor, + const WorkloadInfo& info) const override + { return nullptr; } + + std::unique_ptr CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr CreateSwitch(const SwitchQueueDescriptor& descriptor, + const WorkloadInfo& Info) const override + { return nullptr; } + + std::unique_ptr 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.hpp b/src/backends/cl/ClWorkloadFactory.hpp index 18d12bedf2..6c3935d840 100644 --- a/src/backends/cl/ClWorkloadFactory.hpp +++ b/src/backends/cl/ClWorkloadFactory.hpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -14,7 +15,7 @@ namespace armnn { // ARM Compute OpenCL workload factory. -class ClWorkloadFactory : public IWorkloadFactory +class ClWorkloadFactory : public WorkloadFactoryBase { public: ClWorkloadFactory(const std::shared_ptr& memoryManager); diff --git a/src/backends/neon/NeonWorkloadFactory.hpp b/src/backends/neon/NeonWorkloadFactory.hpp index 5bee771528..f876092c45 100644 --- a/src/backends/neon/NeonWorkloadFactory.hpp +++ b/src/backends/neon/NeonWorkloadFactory.hpp @@ -6,6 +6,7 @@ #include +#include #include #include @@ -15,7 +16,7 @@ namespace armnn { // Neon workload factory. -class NeonWorkloadFactory : public IWorkloadFactory +class NeonWorkloadFactory : public WorkloadFactoryBase { public: NeonWorkloadFactory(const std::shared_ptr& memoryManager); -- cgit v1.2.1