MLCE-80 Remove strong typing from NeonBatchNormalization
authorMatthew Bentham <matthew.bentham@arm.com>
Wed, 12 Dec 2018 16:15:59 +0000 (16:15 +0000)
committerMatthew Bentham <matthew.bentham@arm.com>
Mon, 31 Dec 2018 15:56:48 +0000 (15:56 +0000)
Technical debt work towards adding some new Neon workloads

Change-Id: I08ab6dd14d0e89d4ebc8a878fb69caa5681012bf

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/NeonBatchNormalizationWorkload.cpp [moved from src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp with 89% similarity]
src/backends/neon/workloads/NeonBatchNormalizationWorkload.hpp [moved from src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp with 80% similarity]
src/backends/neon/workloads/NeonWorkloads.hpp

index 724455d..7efdf15 100644 (file)
@@ -19,7 +19,7 @@
 #ifdef ARMCOMPUTENEON_ENABLED
 #include "workloads/NeonAdditionWorkload.hpp"
 #include "workloads/NeonActivationWorkload.hpp"
-#include "workloads/NeonBatchNormalizationFloatWorkload.hpp"
+#include "workloads/NeonBatchNormalizationWorkload.hpp"
 #include "workloads/NeonConvolution2dWorkload.hpp"
 #include "workloads/NeonDepthwiseConvolutionWorkload.hpp"
 #include "workloads/NeonL2NormalizationFloatWorkload.hpp"
index 848a6f3..85e5768 100644 (file)
@@ -185,7 +185,7 @@ std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateSubtraction(
 std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateBatchNormalization(
     const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const
 {
-    return MakeWorkloadHelper<NeonBatchNormalizationFloatWorkload, NullWorkload>(descriptor, info);
+    return std::make_unique<NeonBatchNormalizationWorkload>(descriptor, info);
 }
 
 std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
index a3058ad..fdfd696 100644 (file)
@@ -15,7 +15,7 @@ BACKEND_SOURCES := \
         NeonWorkloadFactory.cpp \
         workloads/NeonActivationWorkload.cpp \
         workloads/NeonAdditionWorkload.cpp \
-        workloads/NeonBatchNormalizationFloatWorkload.cpp \
+        workloads/NeonBatchNormalizationWorkload.cpp \
         workloads/NeonConstantWorkload.cpp \
         workloads/NeonConvertFp16ToFp32Workload.cpp \
         workloads/NeonConvertFp32ToFp16Workload.cpp \
index adb64cb..86fc457 100644 (file)
@@ -183,23 +183,23 @@ static void NeonCreateBatchNormalizationWorkloadTest(DataLayout dataLayout)
 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
 BOOST_AUTO_TEST_CASE(CreateBatchNormalizationFloat16NchwWorkload)
 {
-    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationFloatWorkload, DataType::Float16>(DataLayout::NCHW);
+    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationWorkload, DataType::Float16>(DataLayout::NCHW);
 }
 
 BOOST_AUTO_TEST_CASE(CreateBatchNormalizationFloat16NhwcWorkload)
 {
-    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationFloatWorkload, DataType::Float16>(DataLayout::NHWC);
+    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationWorkload, DataType::Float16>(DataLayout::NHWC);
 }
 #endif
 
 BOOST_AUTO_TEST_CASE(CreateBatchNormalizationFloatNchwWorkload)
 {
-    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationFloatWorkload, DataType::Float32>(DataLayout::NCHW);
+    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationWorkload, DataType::Float32>(DataLayout::NCHW);
 }
 
 BOOST_AUTO_TEST_CASE(CreateBatchNormalizationFloatNhwcWorkload)
 {
-    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationFloatWorkload, DataType::Float32>(DataLayout::NHWC);
+    NeonCreateBatchNormalizationWorkloadTest<NeonBatchNormalizationWorkload, DataType::Float32>(DataLayout::NHWC);
 }
 
 template <typename armnn::DataType DataType>
index 9961397..7b0251c 100644 (file)
@@ -8,8 +8,8 @@ list(APPEND armnnNeonBackendWorkloads_sources
     NeonActivationWorkload.hpp
     NeonAdditionWorkload.cpp
     NeonAdditionWorkload.hpp
-    NeonBatchNormalizationFloatWorkload.cpp
-    NeonBatchNormalizationFloatWorkload.hpp
+    NeonBatchNormalizationWorkload.cpp
+    NeonBatchNormalizationWorkload.hpp
     NeonConstantWorkload.cpp
     NeonConstantWorkload.hpp
     NeonConvertFp16ToFp32Workload.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "NeonBatchNormalizationFloatWorkload.hpp"
+#include "NeonBatchNormalizationWorkload.hpp"
 #include <backendsCommon/CpuTensorHandle.hpp>
 #include <aclCommon/ArmComputeTensorUtils.hpp>
 #include <armnn/ArmNN.hpp>
@@ -43,11 +43,11 @@ arm_compute::Status NeonBatchNormalizationValidate(const TensorInfo& input,
                                                             descriptor.m_Eps);
 }
 
-NeonBatchNormalizationFloatWorkload::NeonBatchNormalizationFloatWorkload(
+NeonBatchNormalizationWorkload::NeonBatchNormalizationWorkload(
     const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : FloatWorkload<BatchNormalizationQueueDescriptor>(descriptor, info)
+    : BaseWorkload<BatchNormalizationQueueDescriptor>(descriptor, info)
 {
-    m_Data.ValidateInputsOutputs("NeonBatchNormalizationFloatWorkload", 1, 1);
+    m_Data.ValidateInputsOutputs("NeonBatchNormalizationWorkload", 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();
@@ -87,13 +87,13 @@ NeonBatchNormalizationFloatWorkload::NeonBatchNormalizationFloatWorkload(
     FreeUnusedTensors();
 }
 
-void NeonBatchNormalizationFloatWorkload::Execute() const
+void NeonBatchNormalizationWorkload::Execute() const
 {
-    ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonBatchNormalizationFloatWorkload_Execute");
+    ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonBatchNormalizationWorkload_Execute");
     m_Layer.run();
 }
 
-void NeonBatchNormalizationFloatWorkload::FreeUnusedTensors()
+void NeonBatchNormalizationWorkload::FreeUnusedTensors()
 {
     FreeTensorIfUnused(m_Mean);
     FreeTensorIfUnused(m_Variance);
@@ -18,11 +18,11 @@ arm_compute::Status NeonBatchNormalizationValidate(const TensorInfo& input,
                                                    const TensorInfo& gamma,
                                                    const BatchNormalizationDescriptor& descriptor);
 
-class NeonBatchNormalizationFloatWorkload : public FloatWorkload<BatchNormalizationQueueDescriptor>
+class NeonBatchNormalizationWorkload : public BaseWorkload<BatchNormalizationQueueDescriptor>
 {
 public:
-    NeonBatchNormalizationFloatWorkload(const BatchNormalizationQueueDescriptor& descriptor,
-                                        const WorkloadInfo& info);
+    NeonBatchNormalizationWorkload(const BatchNormalizationQueueDescriptor& descriptor,
+                                   const WorkloadInfo& info);
     virtual void Execute() const override;
 
 private:
@@ -38,5 +38,3 @@ private:
 
 } //namespace armnn
 
-
-
index 82142f2..1f08d03 100644 (file)
@@ -6,7 +6,7 @@
 #pragma once
 #include "NeonActivationWorkload.hpp"
 #include "NeonAdditionWorkload.hpp"
-#include "NeonBatchNormalizationFloatWorkload.hpp"
+#include "NeonBatchNormalizationWorkload.hpp"
 #include "NeonConstantWorkload.hpp"
 #include "NeonConvertFp16ToFp32Workload.hpp"
 #include "NeonConvertFp32ToFp16Workload.hpp"