aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/backends/NeonWorkloads
diff options
context:
space:
mode:
authorarovir01 <Aron.Virginas-Tar@arm.com>2018-08-28 17:40:45 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-09-17 17:21:21 +0100
commita68241066c3e797dab70f515d2c55aaa74abf564 (patch)
tree9f5b70a02dcd7d5d61d58e2bf235ee473be53ce5 /src/armnn/backends/NeonWorkloads
parentc577f2c6a3b4ddb6ba87a882723c53a248afbeba (diff)
downloadarmnn-a68241066c3e797dab70f515d2c55aaa74abf564.tar.gz
IVGCVSW-1324: Make biases truly optional for Conv2d and DepthwiseConvolution
!android-nn-driver:145961 Change-Id: I039ab0adc61725859514246365b5e5b5fa603eaa
Diffstat (limited to 'src/armnn/backends/NeonWorkloads')
-rw-r--r--src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp7
-rw-r--r--src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp11
-rw-r--r--src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp9
-rw-r--r--src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp4
4 files changed, 20 insertions, 11 deletions
diff --git a/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp b/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
index e76afb6cf7..e1556c292c 100644
--- a/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
+++ b/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
@@ -21,17 +21,20 @@ arm_compute::Status NeonConvolution2dWorkloadValidate(const TensorInfo& input,
const TensorInfo& output,
const Convolution2dDescriptor& descriptor,
const TensorInfo& weights,
- const TensorInfo& biases)
+ const boost::optional<TensorInfo>& biases)
{
const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);
const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);
const arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights);
+
arm_compute::TensorInfo aclBiasesInfo;
arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr;
if (descriptor.m_BiasEnabled)
{
- aclBiasesInfo = BuildArmComputeTensorInfo(biases);
+ BOOST_ASSERT(biases.is_initialized());
+
+ aclBiasesInfo = BuildArmComputeTensorInfo(biases.get());
optionalAclBiasesInfo = &aclBiasesInfo;
}
diff --git a/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp b/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
index 524d2c90b6..de559395c2 100644
--- a/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
+++ b/src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
@@ -5,15 +5,16 @@
#pragma once
-#include <backends/Workload.hpp>
-#include <backends/NeonWorkloadUtils.hpp>
-
-#include "backends/CpuTensorHandle.hpp"
#include "backends/ArmComputeTensorUtils.hpp"
+#include "backends/CpuTensorHandle.hpp"
#include "backends/NeonLayerSupport.hpp"
+#include "backends/NeonWorkloadUtils.hpp"
+#include "backends/Workload.hpp"
#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <boost/optional.hpp>
+
#include <memory>
namespace armnn
@@ -23,7 +24,7 @@ arm_compute::Status NeonConvolution2dWorkloadValidate(const TensorInfo& input,
const TensorInfo& output,
const Convolution2dDescriptor& descriptor,
const TensorInfo& weights,
- const TensorInfo& biases);
+ const boost::optional<TensorInfo>& biases);
template<armnn::DataType... dataTypes>
class NeonConvolution2dBaseWorkload : public TypedWorkload<Convolution2dQueueDescriptor, dataTypes...>
diff --git a/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp b/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
index 58d6061537..26705c01a2 100644
--- a/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
+++ b/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
@@ -14,7 +14,7 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i
const TensorInfo& output,
const DepthwiseConvolution2dDescriptor& descriptor,
const TensorInfo& weights,
- const TensorInfo& biases)
+ const boost::optional<TensorInfo>& biases)
{
const arm_compute::TensorInfo aclInputInfo =
armcomputetensorutils::BuildArmComputeTensorInfo(input);
@@ -25,9 +25,12 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i
arm_compute::TensorInfo aclBiasesInfo;
arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr;
+
if (descriptor.m_BiasEnabled)
{
- aclBiasesInfo = armcomputetensorutils::BuildArmComputeTensorInfo(biases);
+ BOOST_ASSERT(biases.is_initialized());
+
+ aclBiasesInfo = armcomputetensorutils::BuildArmComputeTensorInfo(biases.get());
optionalAclBiasesInfo = &aclBiasesInfo;
}
@@ -43,4 +46,4 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i
aclDepthMultiplier);
}
-}
+} \ No newline at end of file
diff --git a/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp b/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp
index 0cead354f8..b19e77ef95 100644
--- a/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp
+++ b/src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp
@@ -7,6 +7,8 @@
#include "backends/NeonWorkloadUtils.hpp"
+#include <boost/optional.hpp>
+
namespace armnn
{
@@ -14,6 +16,6 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i
const TensorInfo& output,
const DepthwiseConvolution2dDescriptor& descriptor,
const TensorInfo& weights,
- const TensorInfo& biases);
+ const boost::optional<TensorInfo>& biases);
} // namespace armnn