diff options
Diffstat (limited to 'src')
6 files changed, 17 insertions, 12 deletions
diff --git a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp index 4f96813fc9..e1d433c640 100644 --- a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp +++ b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp @@ -28,6 +28,9 @@ std::unique_ptr<IWorkload> DepthwiseConvolution2dLayer::CreateWorkload(const Gra DepthwiseConvolution2dQueueDescriptor descriptor; descriptor.m_Weight = m_Weight.get(); + + descriptor.m_DataLayout = GetParameters().m_DataLayout; + if (m_Param.m_BiasEnabled) { BOOST_ASSERT_MSG(m_Bias != nullptr, "DepthwiseConvolution2dLayer: Bias data should not be null."); diff --git a/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp b/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp index 68f9cd6733..18f45bb852 100644 --- a/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp +++ b/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp @@ -23,9 +23,9 @@ arm_compute::Status ClDepthwiseConvolutionWorkloadValidate(const TensorInfo& inp const TensorInfo& weights, const boost::optional<TensorInfo>& biases) { - const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input); - const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output); - const arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights); + const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout); + const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout); + const arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout); arm_compute::TensorInfo aclBiasesInfo; arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr; @@ -34,7 +34,7 @@ arm_compute::Status ClDepthwiseConvolutionWorkloadValidate(const TensorInfo& inp { BOOST_ASSERT(biases.is_initialized()); - aclBiasesInfo = BuildArmComputeTensorInfo(biases.get()); + aclBiasesInfo = BuildArmComputeTensorInfo(biases.get(), descriptor.m_DataLayout); optionalAclBiasesInfo = &aclBiasesInfo; } diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp index ec6c97700b..ef60b3238d 100644 --- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp +++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp @@ -17,11 +17,11 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i const boost::optional<TensorInfo>& biases) { const arm_compute::TensorInfo aclInputInfo = - armcomputetensorutils::BuildArmComputeTensorInfo(input); + armcomputetensorutils::BuildArmComputeTensorInfo(input, descriptor.m_DataLayout); const arm_compute::TensorInfo aclOutputInfo = - armcomputetensorutils::BuildArmComputeTensorInfo(output); + armcomputetensorutils::BuildArmComputeTensorInfo(output, descriptor.m_DataLayout); const arm_compute::TensorInfo aclWeightsInfo = - armcomputetensorutils::BuildArmComputeTensorInfo(weights); + armcomputetensorutils::BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout); arm_compute::TensorInfo aclBiasesInfo; arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr; @@ -30,7 +30,7 @@ arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& i { BOOST_ASSERT(biases.is_initialized()); - aclBiasesInfo = armcomputetensorutils::BuildArmComputeTensorInfo(biases.get()); + aclBiasesInfo = armcomputetensorutils::BuildArmComputeTensorInfo(biases.get(), descriptor.m_DataLayout); optionalAclBiasesInfo = &aclBiasesInfo; } diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp index b3f7da41b5..db8e27ab23 100644 --- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp +++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp @@ -20,12 +20,12 @@ NeonDepthwiseConvolutionFloatWorkload::NeonDepthwiseConvolutionFloatWorkload( const TensorInfo& weightInfo = m_Data.m_Weight->GetTensorInfo(); m_KernelTensor = std::make_unique<arm_compute::Tensor>(); - BuildArmComputeTensor(*m_KernelTensor, weightInfo); + BuildArmComputeTensor(*m_KernelTensor, weightInfo, descriptor.m_DataLayout); if (m_Data.m_Parameters.m_BiasEnabled) { m_BiasTensor = std::make_unique<arm_compute::Tensor>(); - BuildArmComputeTensor(*m_BiasTensor, m_Data.m_Bias->GetTensorInfo()); + BuildArmComputeTensor(*m_BiasTensor, m_Data.m_Bias->GetTensorInfo(), descriptor.m_DataLayout); } arm_compute::PadStrideInfo padStrideInfo(m_Data.m_Parameters.m_StrideX, diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp index de8a2aeedb..3efc5b0834 100644 --- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp +++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp @@ -20,12 +20,12 @@ NeonDepthwiseConvolutionUint8Workload::NeonDepthwiseConvolutionUint8Workload( const TensorInfo& weightInfo = m_Data.m_Weight->GetTensorInfo(); m_KernelTensor = std::make_unique<arm_compute::Tensor>(); - BuildArmComputeTensor(*m_KernelTensor, weightInfo); + BuildArmComputeTensor(*m_KernelTensor, weightInfo, descriptor.m_DataLayout); if (m_Data.m_Parameters.m_BiasEnabled) { m_BiasTensor = std::make_unique<arm_compute::Tensor>(); - BuildArmComputeTensor(*m_BiasTensor, m_Data.m_Bias->GetTensorInfo()); + BuildArmComputeTensor(*m_BiasTensor, m_Data.m_Bias->GetTensorInfo(), descriptor.m_DataLayout); } arm_compute::PadStrideInfo padStrideInfo(m_Data.m_Parameters.m_StrideX, diff --git a/src/backends/WorkloadData.hpp b/src/backends/WorkloadData.hpp index 5da9e8b1fd..8c1cbd4964 100644 --- a/src/backends/WorkloadData.hpp +++ b/src/backends/WorkloadData.hpp @@ -159,11 +159,13 @@ struct DepthwiseConvolution2dQueueDescriptor : QueueDescriptorWithParameters<Dep DepthwiseConvolution2dQueueDescriptor() : m_Weight(nullptr) , m_Bias(nullptr) + , m_DataLayout(DataLayout::NCHW) { } const ConstCpuTensorHandle* m_Weight; const ConstCpuTensorHandle* m_Bias; + DataLayout m_DataLayout; void Validate(const WorkloadInfo& workloadInfo) const; }; |