diff options
Diffstat (limited to 'src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp')
-rw-r--r-- | src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp b/src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp index 8a9a33b16b..ad3a602f48 100644 --- a/src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp +++ b/src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -17,6 +17,29 @@ namespace armnn { using namespace armcomputetensorutils; +arm_compute::Status ClBatchToSpaceNdWorkloadValidate(const TensorInfo& input, + const TensorInfo& output, + const BatchToSpaceNdDescriptor& descriptor) +{ + DataLayout dataLayout = descriptor.m_DataLayout; + const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout); + + // ArmNN blockShape is [H, W] Cl asks for W, H + int32_t blockHeight = armnn::numeric_cast<int32_t>(descriptor.m_BlockShape[0]); + int32_t blockWidth = armnn::numeric_cast<int32_t>(descriptor.m_BlockShape[1]); + + const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout); + + const arm_compute::CropInfo cropInfo = BuildArmComputeCropInfo(descriptor); + + const arm_compute::Status aclStatus = arm_compute::CLBatchToSpaceLayer::validate(&aclInputInfo, + blockWidth, + blockHeight, + &aclOutputInfo, + cropInfo); + return aclStatus; +} + ClBatchToSpaceNdWorkload::ClBatchToSpaceNdWorkload(const BatchToSpaceNdQueueDescriptor& descriptor, const WorkloadInfo& info, const arm_compute::CLCompileContext& clCompileContext) @@ -42,9 +65,11 @@ ClBatchToSpaceNdWorkload::ClBatchToSpaceNdWorkload(const BatchToSpaceNdQueueDesc arm_compute::ICLTensor& output = static_cast<IClTensorHandle*>(m_Data.m_Outputs[0])->GetTensor(); output.info()->set_data_layout(aclDataLayout); + const arm_compute::CropInfo cropInfo = BuildArmComputeCropInfo(descriptor.m_Parameters); + { ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "ClBatchToSpaceNdWorkload_configure"); - m_Layer.configure(clCompileContext, &input, blockWidth, blockHeight, &output); + m_Layer.configure(clCompileContext, &input, blockWidth, blockHeight, &output, cropInfo); } } @@ -54,24 +79,4 @@ void ClBatchToSpaceNdWorkload::Execute() const RunClFunction(m_Layer, CHECK_LOCATION()); } -arm_compute::Status ClBatchToSpaceNdWorkloadValidate(const TensorInfo& input, - const TensorInfo& output, - const BatchToSpaceNdDescriptor& descriptor) -{ - DataLayout dataLayout = descriptor.m_DataLayout; - const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout); - - // ArmNN blockShape is [H, W] Cl asks for W, H - int32_t blockHeight = armnn::numeric_cast<int32_t>(descriptor.m_BlockShape[0]); - int32_t blockWidth = armnn::numeric_cast<int32_t>(descriptor.m_BlockShape[1]); - - const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout); - - const arm_compute::Status aclStatus = arm_compute::CLBatchToSpaceLayer::validate(&aclInputInfo, - blockWidth, - blockHeight, - &aclOutputInfo); - return aclStatus; -} - } //namespace armnn |