From a05c2106ba5dd4361363049b0588d6995fd01f45 Mon Sep 17 00:00:00 2001 From: Nikhil Raj Date: Tue, 25 Sep 2018 16:16:13 +0100 Subject: IVGCVSW-1910 Add data layout parameter for DepthwiseConvolution Change-Id: Ia14c9d8c0a38b669a7589e63d74424e398790e54 --- src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp | 8 ++++---- .../NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp | 8 ++++---- .../NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp | 4 ++-- .../NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp | 4 ++-- src/backends/WorkloadData.hpp | 2 ++ 5 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/backends') 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& 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& 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(); - BuildArmComputeTensor(*m_KernelTensor, weightInfo); + BuildArmComputeTensor(*m_KernelTensor, weightInfo, descriptor.m_DataLayout); if (m_Data.m_Parameters.m_BiasEnabled) { m_BiasTensor = std::make_unique(); - 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(); - BuildArmComputeTensor(*m_KernelTensor, weightInfo); + BuildArmComputeTensor(*m_KernelTensor, weightInfo, descriptor.m_DataLayout); if (m_Data.m_Parameters.m_BiasEnabled) { m_BiasTensor = std::make_unique(); - 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