aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColm Donelan <colm.donelan@arm.com>2023-07-19 11:37:26 +0100
committerColm Donelan <colm.donelan@arm.com>2023-07-20 10:04:24 +0100
commit53d858b6a20590cf1e20aa5dbb5e63158985b9d0 (patch)
tree1cd2e4fdce54154b48a131fb775a570dd32bb215
parent7306bbef8b06cb9689108ff56bd67036d02ca79d (diff)
downloadarmnn-53d858b6a20590cf1e20aa5dbb5e63158985b9d0.tar.gz
IVGCVSW-7849 and IVGCVSW-7825 block non const bias on NEON CONV2D.
* There's currently a problem with using a non const bias value in NeonConvolution2d. We will block it for the moment. Signed-off-by: Colm Donelan <colm.donelan@arm.com> Change-Id: Ia020cf48f7d5e0642f7763e82501f06ad89945d8
-rw-r--r--src/backends/neon/workloads/NeonConvolution2dWorkload.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
index 3e846fe05f..ae13b970c9 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
@@ -47,6 +47,12 @@ arm_compute::Status NeonConvolution2dWorkloadValidate(const TensorInfo& input,
return arm_compute::Status{arm_compute::ErrorCode::RUNTIME_ERROR,
"ArmNN NeonConvolution2dWorkload has empty bias value."};
}
+ // There's currently a problem with non const bias, so we'll explicitly block it here.
+ 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;
@@ -95,6 +101,8 @@ 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 assume here that NeonConvolution2dWorkloadValidate has been called before the constructor.
+ ARMNN_ASSERT(info.m_InputTensorInfos[2].IsConstant() == true);
}
arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(m_Data.m_Parameters);