From cce11fc89c7e5e71d0595f94c2a37e1e5d47c643 Mon Sep 17 00:00:00 2001 From: Nattapat Chaimanowong Date: Fri, 12 Oct 2018 16:30:56 +0100 Subject: IVGCVSW-1951 Remove type templating from NeonReshapeWorkload Change-Id: I90bf3baaad725d121ca864b7a7bb0c74abb69daf --- src/backends/neon/NeonWorkloadFactory.cpp | 2 +- src/backends/neon/backend.mk | 3 +- src/backends/neon/test/NeonCreateWorkloadTests.cpp | 10 +++---- src/backends/neon/workloads/CMakeLists.txt | 6 ++-- .../neon/workloads/NeonReshapeFloatWorkload.cpp | 32 ---------------------- .../neon/workloads/NeonReshapeFloatWorkload.hpp | 29 -------------------- .../neon/workloads/NeonReshapeUint8Workload.cpp | 30 -------------------- .../neon/workloads/NeonReshapeUint8Workload.hpp | 27 ------------------ .../neon/workloads/NeonReshapeWorkload.cpp | 29 ++++++++++++++++++++ .../neon/workloads/NeonReshapeWorkload.hpp | 24 ++++++++++++++++ src/backends/neon/workloads/NeonWorkloads.hpp | 3 +- 11 files changed, 63 insertions(+), 132 deletions(-) delete mode 100644 src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp delete mode 100644 src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp delete mode 100644 src/backends/neon/workloads/NeonReshapeUint8Workload.cpp delete mode 100644 src/backends/neon/workloads/NeonReshapeUint8Workload.hpp create mode 100644 src/backends/neon/workloads/NeonReshapeWorkload.cpp create mode 100644 src/backends/neon/workloads/NeonReshapeWorkload.hpp diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp index 8202afa7c7..0568c81f8f 100644 --- a/src/backends/neon/NeonWorkloadFactory.cpp +++ b/src/backends/neon/NeonWorkloadFactory.cpp @@ -224,7 +224,7 @@ std::unique_ptr NeonWorkloadFactory::CreateConstant(const ConstantQue std::unique_ptr NeonWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info) const { - return MakeWorkload(descriptor, info); + return std::make_unique(descriptor, info); } std::unique_ptr NeonWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor, diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk index 709497eda0..4350297454 100644 --- a/src/backends/neon/backend.mk +++ b/src/backends/neon/backend.mk @@ -34,8 +34,7 @@ BACKEND_SOURCES := \ workloads/NeonPooling2dBaseWorkload.cpp \ workloads/NeonPooling2dFloatWorkload.cpp \ workloads/NeonPooling2dUint8Workload.cpp \ - workloads/NeonReshapeFloatWorkload.cpp \ - workloads/NeonReshapeUint8Workload.cpp \ + workloads/NeonReshapeWorkload.cpp \ workloads/NeonSoftmaxBaseWorkload.cpp \ workloads/NeonSoftmaxFloatWorkload.cpp \ workloads/NeonSoftmaxUint8Workload.cpp \ diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index ac0451f11b..3f07ef0152 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -370,12 +370,12 @@ BOOST_AUTO_TEST_CASE(CreatePooling2dUint8NhwcWorkload) NeonCreatePooling2dWorkloadTest(DataLayout::NHWC); } -template +template static void NeonCreateReshapeWorkloadTest() { Graph graph; NeonWorkloadFactory factory; - auto workload = CreateReshapeWorkloadTest(factory, graph); + auto workload = CreateReshapeWorkloadTest(factory, graph); // Checks that outputs and inputs are as we expect them (see definition of CreateReshapeWorkloadTest). ReshapeQueueDescriptor queueDescriptor = workload->GetData(); @@ -388,18 +388,18 @@ static void NeonCreateReshapeWorkloadTest() #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC BOOST_AUTO_TEST_CASE(CreateReshapeFloat16Workload) { - NeonCreateReshapeWorkloadTest(); + NeonCreateReshapeWorkloadTest(); } #endif BOOST_AUTO_TEST_CASE(CreateReshapeFloatWorkload) { - NeonCreateReshapeWorkloadTest(); + NeonCreateReshapeWorkloadTest(); } BOOST_AUTO_TEST_CASE(CreateReshapeUint8Workload) { - NeonCreateReshapeWorkloadTest(); + NeonCreateReshapeWorkloadTest(); } template diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index 06eb504e99..7c2247256d 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -53,10 +53,8 @@ list(APPEND armnnNeonBackendWorkloads_sources NeonPooling2dFloatWorkload.hpp NeonPooling2dUint8Workload.cpp NeonPooling2dUint8Workload.hpp - NeonReshapeFloatWorkload.cpp - NeonReshapeFloatWorkload.hpp - NeonReshapeUint8Workload.cpp - NeonReshapeUint8Workload.hpp + NeonReshapeWorkload.cpp + NeonReshapeWorkload.hpp NeonSoftmaxBaseWorkload.cpp NeonSoftmaxBaseWorkload.hpp NeonSoftmaxFloatWorkload.cpp diff --git a/src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp b/src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp deleted file mode 100644 index 2dae9466bb..0000000000 --- a/src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonReshapeFloatWorkload.hpp" - - - -namespace armnn -{ - -NeonReshapeFloatWorkload::NeonReshapeFloatWorkload(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) - : FloatWorkload(descriptor, info) -{ - m_Data.ValidateInputsOutputs("NeonReshapeFloatWorkload", 1, 1); - - arm_compute::ITensor& input = boost::polymorphic_downcast(m_Data.m_Inputs[0])->GetTensor(); - arm_compute::ITensor& output = boost::polymorphic_downcast(m_Data.m_Outputs[0])->GetTensor(); - - m_Layer.configure(&input, &output); -} - -void NeonReshapeFloatWorkload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonReshapeFloatWorkload_Execute"); - m_Layer.run(); -} - -} //namespace armnn - diff --git a/src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp b/src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp deleted file mode 100644 index bdef862419..0000000000 --- a/src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -namespace armnn -{ - -class NeonReshapeFloatWorkload : public FloatWorkload -{ -public: - NeonReshapeFloatWorkload(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info); - - virtual void Execute() const override; - -private: - mutable arm_compute::NEReshapeLayer m_Layer; -}; - -} //namespace armnn - - - - - diff --git a/src/backends/neon/workloads/NeonReshapeUint8Workload.cpp b/src/backends/neon/workloads/NeonReshapeUint8Workload.cpp deleted file mode 100644 index 41aa07fe49..0000000000 --- a/src/backends/neon/workloads/NeonReshapeUint8Workload.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonReshapeUint8Workload.hpp" - - - - -namespace armnn -{ -NeonReshapeUint8Workload::NeonReshapeUint8Workload(const ReshapeQueueDescriptor& descriptor, - const WorkloadInfo& info) - : Uint8Workload(descriptor, info) -{ - m_Data.ValidateInputsOutputs("NeonReshapeUint8Workload", 1, 1); - - arm_compute::ITensor& input = boost::polymorphic_downcast(m_Data.m_Inputs[0])->GetTensor(); - arm_compute::ITensor& output = boost::polymorphic_downcast(m_Data.m_Outputs[0])->GetTensor(); - - m_Layer.configure(&input, &output); -} - -void NeonReshapeUint8Workload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonReshapeUint8Workload_Execute"); - m_Layer.run(); -} -} //namespace armnn diff --git a/src/backends/neon/workloads/NeonReshapeUint8Workload.hpp b/src/backends/neon/workloads/NeonReshapeUint8Workload.hpp deleted file mode 100644 index 4951873f0b..0000000000 --- a/src/backends/neon/workloads/NeonReshapeUint8Workload.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -namespace armnn -{ - -class NeonReshapeUint8Workload : public Uint8Workload -{ -public: - NeonReshapeUint8Workload(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info); - virtual void Execute() const override; - -private: - mutable arm_compute::NEReshapeLayer m_Layer; -}; - -} //namespace armnn - - - - diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.cpp b/src/backends/neon/workloads/NeonReshapeWorkload.cpp new file mode 100644 index 0000000000..c2dcdd500c --- /dev/null +++ b/src/backends/neon/workloads/NeonReshapeWorkload.cpp @@ -0,0 +1,29 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonReshapeWorkload.hpp" + +namespace armnn +{ + +NeonReshapeWorkload::NeonReshapeWorkload(const ReshapeQueueDescriptor& descriptor, + const WorkloadInfo& info) + : BaseWorkload(descriptor, info) +{ + m_Data.ValidateInputsOutputs("NeonReshapeWorkload", 1, 1); + + arm_compute::ITensor& input = boost::polymorphic_downcast(m_Data.m_Inputs[0])->GetTensor(); + arm_compute::ITensor& output = boost::polymorphic_downcast(m_Data.m_Outputs[0])->GetTensor(); + + m_Layer.configure(&input, &output); +} + +void NeonReshapeWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonReshapeWorkload_Execute"); + m_Layer.run(); +} + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.hpp b/src/backends/neon/workloads/NeonReshapeWorkload.hpp new file mode 100644 index 0000000000..8fd278b2eb --- /dev/null +++ b/src/backends/neon/workloads/NeonReshapeWorkload.hpp @@ -0,0 +1,24 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +namespace armnn +{ + +class NeonReshapeWorkload : public BaseWorkload +{ +public: + NeonReshapeWorkload(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info); + + virtual void Execute() const override; + +private: + mutable arm_compute::NEReshapeLayer m_Layer; +}; + +} //namespace armnn diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp index d5a76b44cc..c877c943f4 100644 --- a/src/backends/neon/workloads/NeonWorkloads.hpp +++ b/src/backends/neon/workloads/NeonWorkloads.hpp @@ -29,8 +29,7 @@ #include "NeonPooling2dBaseWorkload.hpp" #include "NeonPooling2dFloatWorkload.hpp" #include "NeonPooling2dUint8Workload.hpp" -#include "NeonReshapeFloatWorkload.hpp" -#include "NeonReshapeUint8Workload.hpp" +#include "NeonReshapeWorkload.hpp" #include "NeonSoftmaxFloatWorkload.hpp" #include "NeonSoftmaxUint8Workload.hpp" #include "NeonSplitterFloatWorkload.hpp" -- cgit v1.2.1