diff options
-rw-r--r-- | src/backends/aclCommon/ArmComputeTensorUtils.hpp | 2 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp | 28 |
2 files changed, 12 insertions, 18 deletions
diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.hpp b/src/backends/aclCommon/ArmComputeTensorUtils.hpp index 0c2ff878e1..fab643ec1f 100644 --- a/src/backends/aclCommon/ArmComputeTensorUtils.hpp +++ b/src/backends/aclCommon/ArmComputeTensorUtils.hpp @@ -110,7 +110,7 @@ unsigned int ComputeDepthwiseConv2dDepthMultiplier(armnn::DataLayout layout, /// Utility function used to setup an arm_compute::PadStrideInfo object from an ArmNN layer descriptor. template <typename Descriptor> -arm_compute::PadStrideInfo BuildArmComputePadStrideInfo(const Descriptor &descriptor) +arm_compute::PadStrideInfo BuildArmComputePadStrideInfo(const Descriptor& descriptor) { return arm_compute::PadStrideInfo(descriptor.m_StrideX, descriptor.m_StrideY, diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp index 518faab6c6..ca8245cf4c 100644 --- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp +++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp @@ -57,21 +57,19 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i arm_compute::TensorInfo* optionalAclBiasesInfo = nullptr; 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 NeonDepthwiseConv2dWorkload does not support non constant bias."}; + "ArmNN NeonDepthwiseConvolutionWorkload has empty bias value."}; } aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout); aclBiasesInfo.set_are_values_constant(biases.value().IsConstant()); optionalAclBiasesInfo = &aclBiasesInfo; } - arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor); - const arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D( - descriptor.m_DilationX, descriptor.m_DilationY); + const arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor); + const arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX, + descriptor.m_DilationY); const arm_compute::ActivationLayerInfo activationInfo = ConvertActivationDescriptorToAclActivationLayerInfo( activationDescriptor); @@ -94,28 +92,24 @@ NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload( arm_compute::ITensor& input = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor(); arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); arm_compute::ITensor& weights = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[1])->GetTensor(); - arm_compute::ITensor* biasesPtr = nullptr; weights.info()->set_are_values_constant(info.m_InputTensorInfos[1].IsConstant()); + arm_compute::ITensor* biasesPtr = nullptr; if (m_Data.m_Parameters.m_BiasEnabled) { 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(); - arm_compute::ITensorInfo* inputInfo = input.info(); - auto weightsShape = weightsInfo->tensor_shape(); - auto inputShape = inputInfo->tensor_shape(); + arm_compute::TensorShape weightsShape = weights.info()->tensor_shape(); + arm_compute::TensorShape inputShape = input.info()->tensor_shape(); // The PermuteDepthwiseConv2dWeights backend optimization has been performed, // converting weights to have the same data layout as input. unsigned int depthMultiplier = ComputeDepthwiseConv2dDepthMultiplier(m_Data.m_Parameters.m_DataLayout, weightsShape, inputShape); - const arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D( - m_Data.m_Parameters.m_DilationX, m_Data.m_Parameters.m_DilationY); + const arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(m_Data.m_Parameters.m_DilationX, + m_Data.m_Parameters.m_DilationY); uint32_t numInputs = m_Data.m_Parameters.m_BiasEnabled ? 3: 2; m_Data.ValidateInputsOutputs("NeonDepthwiseConvolutionWorkload", numInputs, 1); @@ -125,7 +119,7 @@ NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload( weights.info()->set_data_layout(aclDataLayout); output.info()->set_data_layout(aclDataLayout); - arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(m_Data.m_Parameters); + const arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(m_Data.m_Parameters); const arm_compute::ActivationLayerInfo activationInfo = ConvertAdditionalInfoToAclActivationLayerInfo(descriptor); |