From fecd9ed396705a17805ffc49839bd82ae24c892b Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Tue, 9 May 2023 15:47:16 +0100 Subject: IVGCVSW-7454 Enable dynamic bias in CpuAcc and GpuAcc in Conv2d DWConv and FC Signed-off-by: Teresa Charlin Change-Id: Ib6914a9a208475b68e969eba6f70fae4061efa9b --- src/backends/cl/workloads/ClConvolution2dWorkload.cpp | 8 -------- src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp | 8 -------- src/backends/cl/workloads/ClFullyConnectedWorkload.cpp | 9 --------- src/backends/neon/workloads/NeonConvolution2dWorkload.cpp | 8 -------- src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp | 8 -------- src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp | 9 --------- 6 files changed, 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(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(&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(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(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(); 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(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); -- cgit v1.2.1