From 6d63e223b02dc69d20d00ecacd100abe5c04e3fc Mon Sep 17 00:00:00 2001 From: TeresaARM Date: Thu, 11 May 2023 15:16:39 +0000 Subject: Revert "IVGCVSW-7454 Enable dynamic bias in CpuAcc and GpuAcc in Conv2d DWConv and FC" This reverts commit fecd9ed396705a17805ffc49839bd82ae24c892b. Reason for revert: IVGCVSW-7727 Dynamic bias CTS failing Change-Id: I53f67d60fca0e60a81298f90450ceef26b97c321 Signed-off-by: Teresa Charlin --- 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 insertions(+) diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp index 68dfdaaf54..d6a72e6488 100644 --- a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp +++ b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp @@ -42,6 +42,12 @@ 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; @@ -88,6 +94,8 @@ 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 05f95ff71d..e6c9cb5c20 100644 --- a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp +++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp @@ -55,6 +55,12 @@ 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; @@ -106,6 +112,8 @@ 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 727ae5634a..1f26b09964 100644 --- a/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp +++ b/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp @@ -33,6 +33,12 @@ 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; @@ -68,6 +74,9 @@ 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 6d3025188b..3f69718e8f 100644 --- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp +++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp @@ -43,6 +43,12 @@ 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; @@ -91,6 +97,8 @@ 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 2bccfa8db2..518faab6c6 100644 --- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp +++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp @@ -58,6 +58,12 @@ 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; @@ -94,6 +100,8 @@ 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 12eff36cb7..ee3de807e6 100644 --- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp +++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp @@ -38,6 +38,12 @@ 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; @@ -79,6 +85,9 @@ 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