aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin May <kevin.may@arm.com>2023-06-06 17:19:06 +0100
committerTeresaARM <teresa.charlinreyes@arm.com>2023-06-14 09:27:12 +0000
commit8eece0a80f03763b3fc0388adda776782f7147ff (patch)
tree8372630bcaf0b104001e329da70b6944a714f4ad
parent9953db843c0d0f9746707c7c2ddae84af35885c4 (diff)
downloadarmnn-8eece0a80f03763b3fc0388adda776782f7147ff.tar.gz
IVGCVSW-7791 Enable dynamic bias in Conv in CpuAcc and GpuAcc
Signed-off-by: Kevin May <kevin.may@arm.com> Change-Id: I722a9e4f3dba2500c624c6326f74085277e0d631
-rw-r--r--src/backends/cl/workloads/ClConvolution2dWorkload.cpp8
-rw-r--r--src/backends/cl/workloads/ClConvolution3dWorkload.cpp8
-rw-r--r--src/backends/neon/workloads/NeonConvolution2dWorkload.cpp8
-rw-r--r--src/backends/neon/workloads/NeonConvolution3dWorkload.cpp8
4 files changed, 16 insertions, 16 deletions
diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
index d6a72e6488..32152b5834 100644
--- a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
+++ b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
@@ -41,12 +41,10 @@ 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())
+ if (!biases.has_value())
{
return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN ClConvolution2dWorkload does not support non constant bias."};
+ "ArmNN ClConvolution2dWorkload has empty bias value."};
}
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
@@ -94,8 +92,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/ClConvolution3dWorkload.cpp b/src/backends/cl/workloads/ClConvolution3dWorkload.cpp
index b096562747..7480dbd64b 100644
--- a/src/backends/cl/workloads/ClConvolution3dWorkload.cpp
+++ b/src/backends/cl/workloads/ClConvolution3dWorkload.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -35,7 +35,11 @@ arm_compute::Status ClConvolution3dWorkloadValidate(const TensorInfo& input,
arm_compute::TensorInfo* optionalAclBiasesInfo = nullptr;
if (descriptor.m_BiasEnabled)
{
- ARMNN_ASSERT(biases.has_value());
+ if (!biases.has_value())
+ {
+ return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
+ "ArmNN ClConvolution3dWorkload has empty bias value."};
+ }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
optionalAclBiasesInfo = &aclBiasesInfo;
}
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
index 3f69718e8f..3e846fe05f 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
@@ -42,12 +42,10 @@ 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())
+ if (!biases.has_value())
{
return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
- "ArmNN NeonConvolution2dWorkload does not support non constant bias."};
+ "ArmNN NeonConvolution2dWorkload has empty bias value."};
}
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
aclBiasesInfo.set_are_values_constant(biases.value().IsConstant());
@@ -97,8 +95,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/NeonConvolution3dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
index 6aa4b69683..136e533f59 100644
--- a/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -35,7 +35,11 @@ arm_compute::Status NeonConvolution3dWorkloadValidate(const TensorInfo& input,
arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr;
if (descriptor.m_BiasEnabled)
{
- ARMNN_ASSERT(biases.has_value());
+ if (!biases.has_value())
+ {
+ return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
+ "ArmNN NeonConvolution3dWorkload has empty bias value."};
+ }
aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);
optionalAclBiasesInfo = &aclBiasesInfo;