aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNattapat Chaimanowong <nattapat.chaimanowong@arm.com>2018-10-12 11:21:49 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-22 16:57:53 +0100
commitd4b70599c1d5f9f4b6b4c757eb46943157874910 (patch)
treee98dc0abb864426c7d4f54b1c06a506eea897c52
parenta76698c34941ad5cf67fe114be05b038a31d98a7 (diff)
downloadarmnn-d4b70599c1d5f9f4b6b4c757eb46943157874910.tar.gz
IVGCVSW-1951 Remove type templating from NeonActivationWorkload
Change-Id: I564a743b4d90ae5364c5958eed3fbfba97782b80
-rw-r--r--src/backends/neon/NeonLayerSupport.cpp2
-rw-r--r--src/backends/neon/NeonWorkloadFactory.cpp2
-rw-r--r--src/backends/neon/backend.mk3
-rw-r--r--src/backends/neon/test/NeonCreateWorkloadTests.cpp21
-rw-r--r--src/backends/neon/workloads/CMakeLists.txt6
-rw-r--r--src/backends/neon/workloads/NeonActivationUint8Workload.cpp35
-rw-r--r--src/backends/neon/workloads/NeonActivationUint8Workload.hpp28
-rw-r--r--src/backends/neon/workloads/NeonActivationWorkload.cpp (renamed from src/backends/neon/workloads/NeonActivationFloatWorkload.cpp)16
-rw-r--r--src/backends/neon/workloads/NeonActivationWorkload.hpp (renamed from src/backends/neon/workloads/NeonActivationFloatWorkload.hpp)8
-rw-r--r--src/backends/neon/workloads/NeonWorkloads.hpp3
10 files changed, 26 insertions, 98 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
index 8581cfe5d7..68118a2a94 100644
--- a/src/backends/neon/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -16,7 +16,7 @@
#ifdef ARMCOMPUTENEON_ENABLED
#include "workloads/NeonAdditionFloatWorkload.hpp"
-#include "workloads/NeonActivationFloatWorkload.hpp"
+#include "workloads/NeonActivationWorkload.hpp"
#include "workloads/NeonBatchNormalizationFloatWorkload.hpp"
#include "workloads/NeonConvolution2dBaseWorkload.hpp"
#include "workloads/NeonDepthwiseConvolutionBaseWorkload.hpp"
diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp
index dd91b152f2..f17c80edbb 100644
--- a/src/backends/neon/NeonWorkloadFactory.cpp
+++ b/src/backends/neon/NeonWorkloadFactory.cpp
@@ -91,7 +91,7 @@ std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateOutput(const OutputQueueDe
std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor,
const WorkloadInfo& info) const
{
- return MakeWorkload<NeonActivationFloatWorkload, NeonActivationUint8Workload>(descriptor, info);
+ return std::make_unique<NeonActivationWorkload>(descriptor, info);
}
std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk
index b041bca6d7..f3c1843a9c 100644
--- a/src/backends/neon/backend.mk
+++ b/src/backends/neon/backend.mk
@@ -11,8 +11,7 @@ BACKEND_SOURCES := \
NeonBackend.cpp \
NeonLayerSupport.cpp \
NeonWorkloadFactory.cpp \
- workloads/NeonActivationFloatWorkload.cpp \
- workloads/NeonActivationUint8Workload.cpp \
+ workloads/NeonActivationWorkload.cpp \
workloads/NeonAdditionFloatWorkload.cpp \
workloads/NeonBatchNormalizationFloatWorkload.cpp \
workloads/NeonConstantFloatWorkload.cpp \
diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
index 05281cded2..8a85e7dd94 100644
--- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp
+++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
@@ -51,13 +51,12 @@ bool TestNeonTensorHandleInfo(armnn::INeonTensorHandle* handle, const armnn::Ten
} // namespace
-template <typename ActivationWorkloadType, typename armnn::DataType DataType>
+template <typename armnn::DataType DataType>
static void NeonCreateActivationWorkloadTest()
{
Graph graph;
NeonWorkloadFactory factory;
- auto workload = CreateActivationWorkloadTest<ActivationWorkloadType, DataType>
- (factory, graph);
+ auto workload = CreateActivationWorkloadTest<NeonActivationWorkload, DataType>(factory, graph);
// Checks that inputs/outputs are as we expect them (see definition of CreateActivationWorkloadTest).
ActivationQueueDescriptor queueDescriptor = workload->GetData();
@@ -70,13 +69,13 @@ static void NeonCreateActivationWorkloadTest()
#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
BOOST_AUTO_TEST_CASE(CreateActivationFloat16Workload)
{
- NeonCreateActivationWorkloadTest<NeonActivationFloatWorkload, DataType::Float16>();
+ NeonCreateActivationWorkloadTest<DataType::Float16>();
}
#endif
BOOST_AUTO_TEST_CASE(CreateActivationFloatWorkload)
{
- NeonCreateActivationWorkloadTest<NeonActivationFloatWorkload, DataType::Float32>();
+ NeonCreateActivationWorkloadTest<DataType::Float32>();
}
template <typename WorkloadType,
@@ -454,14 +453,14 @@ BOOST_AUTO_TEST_CASE(CreateSingleOutputMultipleInputs)
Graph graph;
NeonWorkloadFactory factory;
std::unique_ptr<NeonSplitterFloatWorkload> wlSplitter;
- std::unique_ptr<NeonActivationFloatWorkload> wlActiv0_0;
- std::unique_ptr<NeonActivationFloatWorkload> wlActiv0_1;
- std::unique_ptr<NeonActivationFloatWorkload> wlActiv1_0;
- std::unique_ptr<NeonActivationFloatWorkload> wlActiv1_1;
+ std::unique_ptr<NeonActivationWorkload> wlActiv0_0;
+ std::unique_ptr<NeonActivationWorkload> wlActiv0_1;
+ std::unique_ptr<NeonActivationWorkload> wlActiv1_0;
+ std::unique_ptr<NeonActivationWorkload> wlActiv1_1;
CreateSplitterMultipleInputsOneOutputWorkloadTest<NeonSplitterFloatWorkload,
- NeonActivationFloatWorkload, DataType::Float32>(factory, graph, wlSplitter, wlActiv0_0, wlActiv0_1,
- wlActiv1_0, wlActiv1_1);
+ NeonActivationWorkload, DataType::Float32>(factory, graph, wlSplitter, wlActiv0_0, wlActiv0_1,
+ wlActiv1_0, wlActiv1_1);
armnn::INeonTensorHandle* sOut0 = dynamic_cast<armnn::INeonTensorHandle*>(wlSplitter->GetData().m_Outputs[0]);
armnn::INeonTensorHandle* sOut1 = dynamic_cast<armnn::INeonTensorHandle*>(wlSplitter->GetData().m_Outputs[1]);
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt
index 850c65cb4e..460b870273 100644
--- a/src/backends/neon/workloads/CMakeLists.txt
+++ b/src/backends/neon/workloads/CMakeLists.txt
@@ -4,10 +4,8 @@
#
list(APPEND armnnNeonBackendWorkloads_sources
- NeonActivationFloatWorkload.cpp
- NeonActivationFloatWorkload.hpp
- NeonActivationUint8Workload.cpp
- NeonActivationUint8Workload.hpp
+ NeonActivationWorkload.cpp
+ NeonActivationWorkload.hpp
NeonAdditionFloatWorkload.cpp
NeonAdditionFloatWorkload.hpp
NeonBaseConstantWorkload.hpp
diff --git a/src/backends/neon/workloads/NeonActivationUint8Workload.cpp b/src/backends/neon/workloads/NeonActivationUint8Workload.cpp
deleted file mode 100644
index 4aed6b510f..0000000000
--- a/src/backends/neon/workloads/NeonActivationUint8Workload.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "NeonActivationUint8Workload.hpp"
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/neon/NeonLayerSupport.hpp>
-
-namespace armnn
-{
-NeonActivationUint8Workload::NeonActivationUint8Workload(const ActivationQueueDescriptor& descriptor,
- const WorkloadInfo& info)
- : Uint8Workload<ActivationQueueDescriptor>(descriptor, info)
-{
- auto activation = ConvertActivationFunctionToAclActivationFunction(m_Data.m_Parameters.m_Function);
- arm_compute::ActivationLayerInfo layerInfo(activation,
- m_Data.m_Parameters.m_A,
- m_Data.m_Parameters.m_B);
-
- m_Data.ValidateInputsOutputs("NeonActivationUint8Workload", 1, 1);
-
- arm_compute::ITensor& input = static_cast<NeonTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
- arm_compute::ITensor& output = static_cast<NeonTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
-
- m_ActivationLayer.configure(&input, &output, layerInfo);
-}
-
-void NeonActivationUint8Workload::Execute() const
-{
- ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonActivationUint8Workload_Execute");
-
- m_ActivationLayer.run();
-}
-} //namespace armnn
diff --git a/src/backends/neon/workloads/NeonActivationUint8Workload.hpp b/src/backends/neon/workloads/NeonActivationUint8Workload.hpp
deleted file mode 100644
index 56e3544379..0000000000
--- a/src/backends/neon/workloads/NeonActivationUint8Workload.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
-
-namespace armnn
-{
-
-class NeonActivationUint8Workload : public Uint8Workload<ActivationQueueDescriptor>
-{
-public:
- NeonActivationUint8Workload(const ActivationQueueDescriptor& descriptor, const WorkloadInfo& info);
- virtual void Execute() const override;
-
-private:
- mutable arm_compute::NEActivationLayer m_ActivationLayer;
-};
-
-} //namespace armnn
-
-
-
-
-
diff --git a/src/backends/neon/workloads/NeonActivationFloatWorkload.cpp b/src/backends/neon/workloads/NeonActivationWorkload.cpp
index 1d6bf70431..c1c240f65f 100644
--- a/src/backends/neon/workloads/NeonActivationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonActivationWorkload.cpp
@@ -3,10 +3,9 @@
// SPDX-License-Identifier: MIT
//
-#include "NeonActivationFloatWorkload.hpp"
+#include "NeonActivationWorkload.hpp"
#include <backends/aclCommon/ArmComputeUtils.hpp>
-
namespace armnn
{
@@ -32,11 +31,11 @@ arm_compute::Status NeonActivationWorkloadValidate(const TensorInfo& input,
activationLayerInfo);
}
-NeonActivationFloatWorkload::NeonActivationFloatWorkload(const ActivationQueueDescriptor& descriptor,
- const WorkloadInfo& info)
- : FloatWorkload<ActivationQueueDescriptor>(descriptor, info)
+NeonActivationWorkload::NeonActivationWorkload(const ActivationQueueDescriptor& descriptor,
+ const WorkloadInfo& info)
+ : BaseWorkload<ActivationQueueDescriptor>(descriptor, info)
{
- m_Data.ValidateInputsOutputs("NeonActivationFloatWorkload", 1, 1);
+ m_Data.ValidateInputsOutputs("NeonActivationWorkload", 1, 1);
const arm_compute::ActivationLayerInfo activationLayerInfo =
ConvertActivationDescriptorToAclActivationLayerInfo(m_Data.m_Parameters);
@@ -47,11 +46,10 @@ NeonActivationFloatWorkload::NeonActivationFloatWorkload(const ActivationQueueDe
m_ActivationLayer.configure(&input, &output, activationLayerInfo);
}
-void NeonActivationFloatWorkload::Execute() const
+void NeonActivationWorkload::Execute() const
{
- ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonActivationFloatWorkload_Execute");
+ ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonActivationWorkload_Execute");
m_ActivationLayer.run();
}
} //namespace armnn
-
diff --git a/src/backends/neon/workloads/NeonActivationFloatWorkload.hpp b/src/backends/neon/workloads/NeonActivationWorkload.hpp
index 4d2f51fb4f..b120f94bdc 100644
--- a/src/backends/neon/workloads/NeonActivationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonActivationWorkload.hpp
@@ -14,16 +14,14 @@ arm_compute::Status NeonActivationWorkloadValidate(const TensorInfo& input,
const TensorInfo& output,
const ActivationDescriptor& descriptor);
-class NeonActivationFloatWorkload : public FloatWorkload<ActivationQueueDescriptor>
+class NeonActivationWorkload : public BaseWorkload<ActivationQueueDescriptor>
{
public:
- NeonActivationFloatWorkload(const ActivationQueueDescriptor& descriptor, const WorkloadInfo& info);
+ NeonActivationWorkload(const ActivationQueueDescriptor& descriptor, const WorkloadInfo& info);
void Execute() const override;
private:
mutable arm_compute::NEActivationLayer m_ActivationLayer;
};
-} //namespace armnn
-
-
+} //namespace armnn
diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp
index a4ab6b2cac..db2df18371 100644
--- a/src/backends/neon/workloads/NeonWorkloads.hpp
+++ b/src/backends/neon/workloads/NeonWorkloads.hpp
@@ -4,8 +4,7 @@
//
#pragma once
-#include "NeonActivationFloatWorkload.hpp"
-#include "NeonActivationUint8Workload.hpp"
+#include "NeonActivationWorkload.hpp"
#include "NeonAdditionFloatWorkload.hpp"
#include "NeonBaseConstantWorkload.hpp"
#include "NeonBaseMergerWorkload.hpp"