MLCE-79 NEON QASYMM8 Addition Support
authorMatthew Bentham <Matthew.Bentham@arm.com>
Mon, 10 Dec 2018 10:48:52 +0000 (10:48 +0000)
committerMatthew Bentham <matthew.bentham@arm.com>
Mon, 10 Dec 2018 14:07:56 +0000 (14:07 +0000)
Unit tests not yet added as need Compute Library a84faffd.

Change-Id: Ica16df493e8d6a76da9d1f74bf43b8403f9dff62

src/backends/neon/NeonLayerSupport.cpp
src/backends/neon/NeonWorkloadFactory.cpp
src/backends/neon/backend.mk
src/backends/neon/test/NeonCreateWorkloadTests.cpp
src/backends/neon/workloads/CMakeLists.txt
src/backends/neon/workloads/NeonAdditionWorkload.cpp [moved from src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp with 76% similarity]
src/backends/neon/workloads/NeonAdditionWorkload.hpp [moved from src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp with 75% similarity]
src/backends/neon/workloads/NeonWorkloads.hpp

index fd279e5..36c9f8b 100644 (file)
@@ -17,7 +17,7 @@
 #include <boost/core/ignore_unused.hpp>
 
 #ifdef ARMCOMPUTENEON_ENABLED
-#include "workloads/NeonAdditionFloatWorkload.hpp"
+#include "workloads/NeonAdditionWorkload.hpp"
 #include "workloads/NeonActivationWorkload.hpp"
 #include "workloads/NeonBatchNormalizationFloatWorkload.hpp"
 #include "workloads/NeonConvolution2dWorkload.hpp"
index 0dfd52e..aed2d56 100644 (file)
@@ -161,7 +161,7 @@ std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateNormalization(
 std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
                                                                       const WorkloadInfo&            info) const
 {
-    return MakeWorkloadHelper<NeonAdditionFloatWorkload, NullWorkload>(descriptor, info);
+    return std::make_unique<NeonAdditionWorkload>(descriptor, info);
 }
 
 std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMultiplication(
index 2f74ecd..88fb643 100644 (file)
@@ -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 \
index dc6ec16..adb64cb 100644 (file)
@@ -107,7 +107,7 @@ static void NeonCreateElementwiseWorkloadTest()
 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
 BOOST_AUTO_TEST_CASE(CreateAdditionFloat16Workload)
 {
-    NeonCreateElementwiseWorkloadTest<NeonAdditionFloatWorkload,
+    NeonCreateElementwiseWorkloadTest<NeonAdditionWorkload,
                                       AdditionQueueDescriptor,
                                       AdditionLayer,
                                       DataType::Float16>();
@@ -116,7 +116,7 @@ BOOST_AUTO_TEST_CASE(CreateAdditionFloat16Workload)
 
 BOOST_AUTO_TEST_CASE(CreateAdditionFloatWorkload)
 {
-    NeonCreateElementwiseWorkloadTest<NeonAdditionFloatWorkload,
+    NeonCreateElementwiseWorkloadTest<NeonAdditionWorkload,
                                       AdditionQueueDescriptor,
                                       AdditionLayer,
                                       DataType::Float32>();
index e383b04..2c2c9f0 100644 (file)
@@ -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
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "NeonAdditionFloatWorkload.hpp"
+#include "NeonAdditionWorkload.hpp"
 #include <aclCommon/ArmComputeTensorUtils.hpp>
 #include <backendsCommon/CpuTensorHandle.hpp>
 
@@ -25,11 +25,11 @@ arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0,
 }
 
 
-NeonAdditionFloatWorkload::NeonAdditionFloatWorkload(const AdditionQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info)
-    : FloatWorkload<AdditionQueueDescriptor>(descriptor, info)
+NeonAdditionWorkload::NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor,
+                                           const WorkloadInfo& info)
+    : BaseWorkload<AdditionQueueDescriptor>(descriptor, info)
 {
-    m_Data.ValidateInputsOutputs("NeonAdditionFloatWorkload", 2, 1);
+    m_Data.ValidateInputsOutputs("NeonAdditionWorkload", 2, 1);
 
     arm_compute::ITensor& input1 = boost::polymorphic_downcast<INeonTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
     arm_compute::ITensor& input2 = boost::polymorphic_downcast<INeonTensorHandle*>(m_Data.m_Inputs[1])->GetTensor();
@@ -38,9 +38,9 @@ NeonAdditionFloatWorkload::NeonAdditionFloatWorkload(const AdditionQueueDescript
     m_AddLayer.configure(&input1, &input2, &output, arm_compute::ConvertPolicy::SATURATE);
 }
 
-void NeonAdditionFloatWorkload::Execute() const
+void NeonAdditionWorkload::Execute() const
 {
-    ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonAdditionFloatWorkload_Execute");
+    ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonAdditionWorkload_Execute");
     m_AddLayer.run();
 }
 
@@ -14,10 +14,10 @@ arm_compute::Status NeonAdditionWorkloadValidate(const TensorInfo& input0,
                                                  const TensorInfo& input1,
                                                  const TensorInfo& output);
 
-class NeonAdditionFloatWorkload : public FloatWorkload<AdditionQueueDescriptor>
+class NeonAdditionWorkload : public BaseWorkload<AdditionQueueDescriptor>
 {
 public:
-    NeonAdditionFloatWorkload(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info);
+    NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info);
     virtual void Execute() const override;
 
 private:
index e55cf0d..48bd137 100644 (file)
@@ -5,7 +5,7 @@
 
 #pragma once
 #include "NeonActivationWorkload.hpp"
-#include "NeonAdditionFloatWorkload.hpp"
+#include "NeonAdditionWorkload.hpp"
 #include "NeonBatchNormalizationFloatWorkload.hpp"
 #include "NeonConstantWorkload.hpp"
 #include "NeonConvertFp16ToFp32Workload.hpp"