aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeresa Charlin <teresa.charlinreyes@arm.com>2023-05-09 15:47:16 +0100
committerTeresa Charlin <teresa.charlinreyes@arm.com>2023-05-09 22:56:18 +0100
commitfecd9ed396705a17805ffc49839bd82ae24c892b (patch)
treeb6e082f41ea9273d3b793f12a871385e38497ad9
parent1bc497e3ffcf097b05d05d526e3af75ab3a6fa57 (diff)
downloadarmnn-fecd9ed396705a17805ffc49839bd82ae24c892b.tar.gz
IVGCVSW-7454 Enable dynamic bias in CpuAcc and GpuAcc in Conv2d DWConv and FC
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com> Change-Id: Ib6914a9a208475b68e969eba6f70fae4061efa9b
-rw-r--r--src/backends/cl/workloads/ClConvolution2dWorkload.cpp8
-rw-r--r--src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp8
-rw-r--r--src/backends/cl/workloads/ClFullyConnectedWorkload.cpp9
-rw-r--r--src/backends/neon/workloads/NeonConvolution2dWorkload.cpp8
-rw-r--r--src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp8
-rw-r--r--src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp9
6 files changed, 0 insertions, 50 deletions
diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
index d6a72e6488..68dfdaaf54 100644
--- a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
+++ b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
@@ -42,12 +42,6 @@ arm_compute::Status ClConvolution2dWorkloadValidate(const TensorInfo& input,
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN ClConvolution2dWorkload does not support non constant bias."};
- }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
optionalAclBiasesInfo = &aclBiasesInfo;
@@ -94,8 +88,6 @@ ClConvolution2dWorkload::ClConvolution2dWorkload(const Convolution2dQueueDescrip
{
arm_compute::ICLTensor& bias = static_cast<IClTensorHandle*>(m_Data.m_Inputs[2])->GetTensor();
bias.info()->set_are_values_constant(info.m_InputTensorInfos[2].IsConstant());
- // We do not support dynamic bias
- ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
m_BiasProxy = std::make_unique<ICLTensorProxy>(&bias);
}
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
index e6c9cb5c20..05f95ff71d 100644
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
+++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
@@ -55,12 +55,6 @@ arm_compute::Status ClDepthwiseConvolutionWorkloadValidate(const TensorInfo& inp
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN ClDepthwiseConv2dWorkload does not support non constant bias."};
- }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
optionalAclBiasesInfo = &aclBiasesInfo;
@@ -112,8 +106,6 @@ ClDepthwiseConvolutionWorkload::ClDepthwiseConvolutionWorkload(
{
bias = &PolymorphicDowncast<IClTensorHandle*>(m_Data.m_Inputs[2])->GetTensor();
bias->info()->set_are_values_constant(info.m_InputTensorInfos[2].IsConstant());
- // We do not support dynamic bias
- ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
}
const arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(
diff --git a/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp b/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
index 1f26b09964..727ae5634a 100644
--- a/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
+++ b/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
@@ -33,12 +33,6 @@ arm_compute::Status ClFullyConnectedWorkloadValidate(const TensorInfo& input,
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "Arm NN ClFullyConnectedWorkload does not support non constant bias."};
- }
aclBiases = BuildArmComputeTensorInfo(biases.value());
aclBiases.set_are_values_constant(biases.value().IsConstant());
optionalAclBiases = &aclBiases;
@@ -74,9 +68,6 @@ ClFullyConnectedWorkload::ClFullyConnectedWorkload(
{
bias = &PolymorphicDowncast<IClTensorHandle*>(m_Data.m_Inputs[2])->GetTensor();
bias->info()->set_are_values_constant(info.m_InputTensorInfos[2].IsConstant());
-
- // We do not support dynamic bias
- ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
}
const arm_compute::ActivationLayerInfo activationInfo = ConvertAdditionalInfoToAclActivationLayerInfo(descriptor);
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
index 3f69718e8f..6d3025188b 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
@@ -43,12 +43,6 @@ arm_compute::Status NeonConvolution2dWorkloadValidate(const TensorInfo& input,
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN NeonConvolution2dWorkload does not support non constant bias."};
- }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
optionalAclBiasesInfo = &aclBiasesInfo;
@@ -97,8 +91,6 @@ NeonConvolution2dWorkload::NeonConvolution2dWorkload(
m_BiasTensor = std::make_unique<arm_compute::Tensor>();
BuildArmComputeTensor(*m_BiasTensor, info.m_InputTensorInfos[2], m_Data.m_Parameters.m_DataLayout);
m_BiasTensor->info()->set_are_values_constant(info.m_InputTensorInfos[2].IsConstant());
- // We do not support dynamic bias
- ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
}
arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(m_Data.m_Parameters);
diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
index 518faab6c6..2bccfa8db2 100644
--- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
@@ -58,12 +58,6 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN NeonDepthwiseConv2dWorkload does not support non constant bias."};
- }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
optionalAclBiasesInfo = &aclBiasesInfo;
@@ -100,8 +94,6 @@ NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload(
{
biasesPtr = &PolymorphicDowncast<IAclTensorHandle *>(m_Data.m_Inputs[2])->GetTensor();
biasesPtr->info()->set_are_values_constant(info.m_InputTensorInfos[2].IsConstant());
- // We do not support dynamic bias
- ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
}
arm_compute::ITensorInfo* weightsInfo = weights.info();
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
index ee3de807e6..12eff36cb7 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
@@ -38,12 +38,6 @@ arm_compute::Status NeonFullyConnectedWorkloadValidate(const TensorInfo& input,
if (descriptor.m_BiasEnabled)
{
ARMNN_ASSERT(biases.has_value());
- // Same for bias as weights. We don't currently support non const.
- if (!biases.value().IsConstant())
- {
- return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "Arm NN NeonFullyConnectedWorkload does not support non constant bias."};
- }
aclBiases = BuildArmComputeTensorInfo(biases.value());
aclBiases.set_are_values_constant(biases.value().IsConstant());
optionalAclBiases = &aclBiases;
@@ -85,9 +79,6 @@ NeonFullyConnectedWorkload::NeonFullyConnectedWorkload(const FullyConnectedQueue
m_BiasesTensorInfo = info.m_InputTensorInfos[2];
BuildArmComputeTensor(*m_BiasesTensor, m_BiasesTensorInfo);
m_BiasesTensor->info()->set_are_values_constant(m_BiasesTensorInfo.IsConstant());
-
- // We do not support dynamic bias
- ARMNN_ASSERT(m_BiasesTensorInfo.IsConstant() == true);
}
const arm_compute::ActivationLayerInfo activationInfo = ConvertAdditionalInfoToAclActivationLayerInfo(descriptor);