diff options
Diffstat (limited to 'src/backends/neon/workloads')
-rw-r--r-- | src/backends/neon/workloads/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp | 37 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp | 27 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp | 25 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp | 26 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp | 25 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dWorkload.cpp (renamed from src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp) | 19 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonPooling2dWorkload.hpp | 30 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonWorkloads.hpp | 4 |
9 files changed, 43 insertions, 158 deletions
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index 7f912610ef..a96c27c75a 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -46,12 +46,8 @@ list(APPEND armnnNeonBackendWorkloads_sources NeonNormalizationFloatWorkload.hpp NeonPermuteWorkload.cpp NeonPermuteWorkload.hpp - NeonPooling2dBaseWorkload.cpp - NeonPooling2dBaseWorkload.hpp - NeonPooling2dFloatWorkload.cpp - NeonPooling2dFloatWorkload.hpp - NeonPooling2dUint8Workload.cpp - NeonPooling2dUint8Workload.hpp + NeonPooling2dWorkload.cpp + NeonPooling2dWorkload.hpp NeonReshapeWorkload.cpp NeonReshapeWorkload.hpp NeonSoftmaxBaseWorkload.cpp diff --git a/src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp deleted file mode 100644 index 8ea41fe18a..0000000000 --- a/src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include <backends/neon/workloads/NeonWorkloadUtils.hpp> - -namespace armnn -{ - -arm_compute::Status NeonPooling2dWorkloadValidate(const TensorInfo& input, - const TensorInfo& output, - const Pooling2dDescriptor& descriptor); - -// Base class template providing an implementation of the Pooling2d layer common to all data types. -template <armnn::DataType... dataTypes> -class NeonPooling2dBaseWorkload : public TypedWorkload<Pooling2dQueueDescriptor, dataTypes...> -{ -public: - using TypedWorkload<Pooling2dQueueDescriptor, dataTypes...>::m_Data; - - NeonPooling2dBaseWorkload(const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info, - const std::string& name); - -protected: - mutable arm_compute::NEPoolingLayer m_PoolingLayer; -}; - - -} //namespace armnn - - - - - diff --git a/src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp deleted file mode 100644 index 46996b088c..0000000000 --- a/src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonPooling2dFloatWorkload.hpp" - - - -namespace armnn -{ - -NeonPooling2dFloatWorkload::NeonPooling2dFloatWorkload(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) - : NeonPooling2dBaseWorkload<armnn::DataType::Float16, armnn::DataType::Float32>(descriptor, info, - "NeonPooling2dFloatWorkload") -{ -} - -void NeonPooling2dFloatWorkload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonPooling2dFloatWorkload_Execute"); - m_PoolingLayer.run(); -} - -} //namespace armnn - diff --git a/src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp deleted file mode 100644 index 9b0eebdc2b..0000000000 --- a/src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include <backends/neon/workloads/NeonWorkloadUtils.hpp> -#include "NeonPooling2dBaseWorkload.hpp" - -namespace armnn -{ - -class NeonPooling2dFloatWorkload : public NeonPooling2dBaseWorkload<armnn::DataType::Float16, - armnn::DataType::Float32> -{ -public: - NeonPooling2dFloatWorkload(const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info); - virtual void Execute() const override; -}; - -} //namespace armnn - - - diff --git a/src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp b/src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp deleted file mode 100644 index 8f99a2be86..0000000000 --- a/src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonPooling2dUint8Workload.hpp" - - - -namespace armnn -{ - -NeonPooling2dUint8Workload::NeonPooling2dUint8Workload(const Pooling2dQueueDescriptor& descriptor, - const WorkloadInfo& info) - : NeonPooling2dBaseWorkload<armnn::DataType::QuantisedAsymm8>(descriptor, info, "NeonPooling2dUint8Workload") -{ -} - -void NeonPooling2dUint8Workload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonPooling2dUint8Workload_Execute"); - m_PoolingLayer.run(); -} - -} //namespace armnn - diff --git a/src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp b/src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp deleted file mode 100644 index d475c5f721..0000000000 --- a/src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include <armnn/Types.hpp> -#include "NeonPooling2dBaseWorkload.hpp" - -namespace armnn -{ - -class NeonPooling2dUint8Workload : public NeonPooling2dBaseWorkload<armnn::DataType::QuantisedAsymm8> -{ -public: - NeonPooling2dUint8Workload(const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info); - virtual void Execute() const override; -}; - -} //namespace armnn - - - - diff --git a/src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp index 054f9c5f75..7892b3a315 100644 --- a/src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp +++ b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT // -#include "NeonPooling2dBaseWorkload.hpp" +#include "NeonPooling2dWorkload.hpp" #include <backends/neon/NeonLayerSupport.hpp> #include <backends/neon/NeonTensorHandle.hpp> #include <backends/aclCommon/ArmComputeUtils.hpp> @@ -25,12 +25,11 @@ arm_compute::Status NeonPooling2dWorkloadValidate(const TensorInfo& input, return arm_compute::NEPoolingLayer::validate(&aclInputInfo, &aclOutputInfo, layerInfo); } -template <armnn::DataType... dataTypes> -NeonPooling2dBaseWorkload<dataTypes...>::NeonPooling2dBaseWorkload( - const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info, const std::string& name) - : TypedWorkload<Pooling2dQueueDescriptor, dataTypes...>(descriptor, info) +NeonPooling2dWorkload::NeonPooling2dWorkload( + const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info) + : BaseWorkload<Pooling2dQueueDescriptor>(descriptor, info) { - m_Data.ValidateInputsOutputs(name, 1, 1); + m_Data.ValidateInputsOutputs("NeonPooling2dWorkload", 1, 1); arm_compute::ITensor& input = boost::polymorphic_downcast<INeonTensorHandle*>(m_Data.m_Inputs[0])->GetTensor(); arm_compute::ITensor& output = boost::polymorphic_downcast<INeonTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); @@ -44,8 +43,10 @@ NeonPooling2dBaseWorkload<dataTypes...>::NeonPooling2dBaseWorkload( m_PoolingLayer.configure(&input, &output, layerInfo); } -template class NeonPooling2dBaseWorkload<DataType::Float16, DataType::Float32>; -template class NeonPooling2dBaseWorkload<DataType::QuantisedAsymm8>; +void NeonPooling2dWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonPooling2dWorkload_Execute"); + m_PoolingLayer.run(); +} } //namespace armnn - diff --git a/src/backends/neon/workloads/NeonPooling2dWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp new file mode 100644 index 0000000000..848221cc6e --- /dev/null +++ b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp @@ -0,0 +1,30 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <backends/neon/workloads/NeonWorkloadUtils.hpp> + +namespace armnn +{ + +arm_compute::Status NeonPooling2dWorkloadValidate(const TensorInfo& input, + const TensorInfo& output, + const Pooling2dDescriptor& descriptor); + +class NeonPooling2dWorkload : public BaseWorkload<Pooling2dQueueDescriptor> +{ +public: + using BaseWorkload<Pooling2dQueueDescriptor>::m_Data; + + NeonPooling2dWorkload(const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info); + + void Execute() const override; + +private: + mutable arm_compute::NEPoolingLayer m_PoolingLayer; +}; + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp index 917b1feac3..93711b6fc1 100644 --- a/src/backends/neon/workloads/NeonWorkloads.hpp +++ b/src/backends/neon/workloads/NeonWorkloads.hpp @@ -25,9 +25,7 @@ #include "NeonMultiplicationFloatWorkload.hpp" #include "NeonNormalizationFloatWorkload.hpp" #include "NeonPermuteWorkload.hpp" -#include "NeonPooling2dBaseWorkload.hpp" -#include "NeonPooling2dFloatWorkload.hpp" -#include "NeonPooling2dUint8Workload.hpp" +#include "NeonPooling2dWorkload.hpp" #include "NeonReshapeWorkload.hpp" #include "NeonSoftmaxFloatWorkload.hpp" #include "NeonSoftmaxUint8Workload.hpp" |