aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2018-09-28 14:14:12 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-10 16:16:57 +0100
commitbcd3c85b5a7657b38f503676b88a80ae74165acd (patch)
treea1f4f934aea17f0faa30f64b9eec0108bbe09ad3 /src/backends/neon
parente1fa50c70c647e3ba6dec0eb49ce82a3820fb6bb (diff)
downloadarmnn-bcd3c85b5a7657b38f503676b88a80ae74165acd.tar.gz
IVGCVSW-1863 Support NHWC for L2Normalization
* Added L2NormalizationDescriptor struct with m_DataLyaout member * Updated all IsL2NormalizationSupported calls to take a descriptor as an argument * Updated L2NormalizationLayer to take a descriptor as an argument !android-nn-driver:150116 Change-Id: I0459352d19cfd269bc864a70cf73910bf44fdc01
Diffstat (limited to 'src/backends/neon')
-rw-r--r--src/backends/neon/NeonLayerSupport.cpp3
-rw-r--r--src/backends/neon/NeonLayerSupport.hpp1
-rw-r--r--src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp8
-rw-r--r--src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp3
4 files changed, 10 insertions, 5 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
index dfaea5c81c..a79f4c0365 100644
--- a/src/backends/neon/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -279,9 +279,10 @@ bool IsInputSupportedNeon(const TensorInfo& input,
bool IsL2NormalizationSupportedNeon(const TensorInfo& input,
const TensorInfo& output,
+ const L2NormalizationDescriptor& descriptor,
std::string* reasonIfUnsupported)
{
- FORWARD_WORKLOAD_VALIDATE_FUNC(NeonL2NormalizationWorkloadValidate, reasonIfUnsupported, input, output);
+ FORWARD_WORKLOAD_VALIDATE_FUNC(NeonL2NormalizationWorkloadValidate, reasonIfUnsupported, input, output, descriptor);
}
bool IsMergerSupportedNeon(const std::vector<const TensorInfo*> inputs,
diff --git a/src/backends/neon/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp
index 95b14b3ba6..419c226b3c 100644
--- a/src/backends/neon/NeonLayerSupport.hpp
+++ b/src/backends/neon/NeonLayerSupport.hpp
@@ -81,6 +81,7 @@ bool IsInputSupportedNeon(const TensorInfo& input,
bool IsL2NormalizationSupportedNeon(const TensorInfo& input,
const TensorInfo& output,
+ const L2NormalizationDescriptor& descriptor,
std::string* reasonIfUnsupported = nullptr);
bool IsMergerSupportedNeon(const std::vector<const TensorInfo*> inputs,
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
index dee789af85..4bddd9a24c 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
@@ -8,12 +8,14 @@
namespace armnn
{
+using namespace armcomputetensorutils;
arm_compute::Status NeonL2NormalizationWorkloadValidate(const TensorInfo& input,
- const TensorInfo& output)
+ const TensorInfo& output,
+ const L2NormalizationDescriptor& descriptor)
{
- const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);
- const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);
+ const arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);
+ const arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);
arm_compute::NormalizationLayerInfo normalizationInfo =
CreateAclNormalizationLayerInfoForL2Normalization(input);
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
index c1221fb98c..70ab385493 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
@@ -14,7 +14,8 @@ namespace armnn
{
arm_compute::Status NeonL2NormalizationWorkloadValidate(const TensorInfo& input,
- const TensorInfo& output);
+ const TensorInfo& output,
+ const L2NormalizationDescriptor& descriptor);
class NeonL2NormalizationFloatWorkload : public FloatWorkload<L2NormalizationQueueDescriptor>
{