From 955258dde076a40373ff9044b5f84c095a0aacef Mon Sep 17 00:00:00 2001 From: Matthew Bentham Date: Mon, 10 Dec 2018 10:48:52 +0000 Subject: MLCE-79 NEON QASYMM8 Addition Support Unit tests not yet added as need Compute Library a84faffd. Change-Id: Ica16df493e8d6a76da9d1f74bf43b8403f9dff62 --- src/backends/neon/NeonLayerSupport.cpp | 2 +- src/backends/neon/NeonWorkloadFactory.cpp | 2 +- src/backends/neon/backend.mk | 2 +- src/backends/neon/test/NeonCreateWorkloadTests.cpp | 4 +- src/backends/neon/workloads/CMakeLists.txt | 4 +- .../neon/workloads/NeonAdditionFloatWorkload.cpp | 48 ---------------------- .../neon/workloads/NeonAdditionFloatWorkload.hpp | 30 -------------- .../neon/workloads/NeonAdditionWorkload.cpp | 48 ++++++++++++++++++++++ .../neon/workloads/NeonAdditionWorkload.hpp | 30 ++++++++++++++ src/backends/neon/workloads/NeonWorkloads.hpp | 2 +- 10 files changed, 86 insertions(+), 86 deletions(-) delete mode 100644 src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp delete mode 100644 src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp create mode 100644 src/backends/neon/workloads/NeonAdditionWorkload.cpp create mode 100644 src/backends/neon/workloads/NeonAdditionWorkload.hpp (limited to 'src/backends/neon') diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index fd279e5d55..36c9f8bc08 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -17,7 +17,7 @@ #include #ifdef ARMCOMPUTENEON_ENABLED -#include "workloads/NeonAdditionFloatWorkload.hpp" +#include "workloads/NeonAdditionWorkload.hpp" #include "workloads/NeonActivationWorkload.hpp" #include "workloads/NeonBatchNormalizationFloatWorkload.hpp" #include "workloads/NeonConvolution2dWorkload.hpp" diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp index 0dfd52ebab..aed2d56646 100644 --- a/src/backends/neon/NeonWorkloadFactory.cpp +++ b/src/backends/neon/NeonWorkloadFactory.cpp @@ -161,7 +161,7 @@ std::unique_ptr NeonWorkloadFactory::CreateNormalization( std::unique_ptr NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info) const { - return MakeWorkloadHelper(descriptor, info); + return std::make_unique(descriptor, info); } std::unique_ptr NeonWorkloadFactory::CreateMultiplication( diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk index 2f74ecd1ce..88fb643c64 100644 --- a/src/backends/neon/backend.mk +++ b/src/backends/neon/backend.mk @@ -14,7 +14,7 @@ BACKEND_SOURCES := \ NeonTimer.cpp \ NeonWorkloadFactory.cpp \ workloads/NeonActivationWorkload.cpp \ - workloads/NeonAdditionFloatWorkload.cpp \ + workloads/NeonAdditionWorkload.cpp \ workloads/NeonBatchNormalizationFloatWorkload.cpp \ workloads/NeonConstantWorkload.cpp \ workloads/NeonConvertFp16ToFp32Workload.cpp \ diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index dc6ec16e49..adb64cba9b 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -107,7 +107,7 @@ static void NeonCreateElementwiseWorkloadTest() #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC BOOST_AUTO_TEST_CASE(CreateAdditionFloat16Workload) { - NeonCreateElementwiseWorkloadTest(); @@ -116,7 +116,7 @@ BOOST_AUTO_TEST_CASE(CreateAdditionFloat16Workload) BOOST_AUTO_TEST_CASE(CreateAdditionFloatWorkload) { - NeonCreateElementwiseWorkloadTest(); diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt index e383b04f25..2c2c9f05e6 100644 --- a/src/backends/neon/workloads/CMakeLists.txt +++ b/src/backends/neon/workloads/CMakeLists.txt @@ -6,8 +6,8 @@ list(APPEND armnnNeonBackendWorkloads_sources NeonActivationWorkload.cpp NeonActivationWorkload.hpp - NeonAdditionFloatWorkload.cpp - NeonAdditionFloatWorkload.hpp + NeonAdditionWorkload.cpp + NeonAdditionWorkload.hpp NeonBatchNormalizationFloatWorkload.cpp NeonBatchNormalizationFloatWorkload.hpp NeonConstantWorkload.cpp diff --git a/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp deleted file mode 100644 index 45de4ddc1a..0000000000 --- a/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "NeonAdditionFloatWorkload.hpp" -#include -#include - -namespace armnn -{ - -arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0, - const TensorInfo& input1, - const TensorInfo& output) -{ - const arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0); - const arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1); - const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output); - - return arm_compute::NEArithmeticAddition::validate(&aclInput0, - &aclInput1, - &aclOutput, - arm_compute::ConvertPolicy::SATURATE); -} - - -NeonAdditionFloatWorkload::NeonAdditionFloatWorkload(const AdditionQueueDescriptor& descriptor, - const WorkloadInfo& info) - : FloatWorkload(descriptor, info) -{ - m_Data.ValidateInputsOutputs("NeonAdditionFloatWorkload", 2, 1); - - arm_compute::ITensor& input1 = boost::polymorphic_downcast(m_Data.m_Inputs[0])->GetTensor(); - arm_compute::ITensor& input2 = boost::polymorphic_downcast(m_Data.m_Inputs[1])->GetTensor(); - arm_compute::ITensor& output = boost::polymorphic_downcast(m_Data.m_Outputs[0])->GetTensor(); - - m_AddLayer.configure(&input1, &input2, &output, arm_compute::ConvertPolicy::SATURATE); -} - -void NeonAdditionFloatWorkload::Execute() const -{ - ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonAdditionFloatWorkload_Execute"); - m_AddLayer.run(); -} - -} //namespace armnn - diff --git a/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp deleted file mode 100644 index 1eab6663a6..0000000000 --- a/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#pragma once - -#include - -namespace armnn -{ - -arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0, - const TensorInfo& input1, - const TensorInfo& output); - -class NeonAdditionFloatWorkload : public FloatWorkload -{ -public: - NeonAdditionFloatWorkload(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info); - virtual void Execute() const override; - -private: - mutable arm_compute::NEArithmeticAddition m_AddLayer; -}; - -} //namespace armnn - - - diff --git a/src/backends/neon/workloads/NeonAdditionWorkload.cpp b/src/backends/neon/workloads/NeonAdditionWorkload.cpp new file mode 100644 index 0000000000..70a3909091 --- /dev/null +++ b/src/backends/neon/workloads/NeonAdditionWorkload.cpp @@ -0,0 +1,48 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonAdditionWorkload.hpp" +#include +#include + +namespace armnn +{ + +arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output) +{ + const arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0); + const arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1); + const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output); + + return arm_compute::NEArithmeticAddition::validate(&aclInput0, + &aclInput1, + &aclOutput, + arm_compute::ConvertPolicy::SATURATE); +} + + +NeonAdditionWorkload::NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor, + const WorkloadInfo& info) + : BaseWorkload(descriptor, info) +{ + m_Data.ValidateInputsOutputs("NeonAdditionWorkload", 2, 1); + + arm_compute::ITensor& input1 = boost::polymorphic_downcast(m_Data.m_Inputs[0])->GetTensor(); + arm_compute::ITensor& input2 = boost::polymorphic_downcast(m_Data.m_Inputs[1])->GetTensor(); + arm_compute::ITensor& output = boost::polymorphic_downcast(m_Data.m_Outputs[0])->GetTensor(); + + m_AddLayer.configure(&input1, &input2, &output, arm_compute::ConvertPolicy::SATURATE); +} + +void NeonAdditionWorkload::Execute() const +{ + ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonAdditionWorkload_Execute"); + m_AddLayer.run(); +} + +} //namespace armnn + diff --git a/src/backends/neon/workloads/NeonAdditionWorkload.hpp b/src/backends/neon/workloads/NeonAdditionWorkload.hpp new file mode 100644 index 0000000000..ca8ae8d7b7 --- /dev/null +++ b/src/backends/neon/workloads/NeonAdditionWorkload.hpp @@ -0,0 +1,30 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include + +namespace armnn +{ + +arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0, + const TensorInfo& input1, + const TensorInfo& output); + +class NeonAdditionWorkload : public BaseWorkload +{ +public: + NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info); + virtual void Execute() const override; + +private: + mutable arm_compute::NEArithmeticAddition m_AddLayer; +}; + +} //namespace armnn + + + diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp index e55cf0d332..48bd137560 100644 --- a/src/backends/neon/workloads/NeonWorkloads.hpp +++ b/src/backends/neon/workloads/NeonWorkloads.hpp @@ -5,7 +5,7 @@ #pragma once #include "NeonActivationWorkload.hpp" -#include "NeonAdditionFloatWorkload.hpp" +#include "NeonAdditionWorkload.hpp" #include "NeonBatchNormalizationFloatWorkload.hpp" #include "NeonConstantWorkload.hpp" #include "NeonConvertFp16ToFp32Workload.hpp" -- cgit v1.2.1