From d0b7b4b1ce489058ea3ad34e29f94d568b4d64eb Mon Sep 17 00:00:00 2001 From: Sang-Hoon Park Date: Tue, 9 Mar 2021 10:47:30 +0000 Subject: Remove valid region calculation from CpuElementwise Valid region calculation has been removed before but used unintentionally while adding dynamic tensor shape support to CpuElementwiseKernel. Remove it to eliminate valid region calculation on CPU side. Implements: COMPMID-4217 Change-Id: Ide161bdf9de81a7feabe1e631682945ca8ab0aa4 Signed-off-by: Sang-Hoon Park Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5242 Tested-by: Arm Jenkins Reviewed-by: Gian Marco Iodice Comments-Addressed: Arm Jenkins --- src/core/cpu/kernels/CpuElementwiseKernel.cpp | 2 +- src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp | 2 +- src/core/helpers/WindowHelpers.h | 11 ++++------- 3 files changed, 6 insertions(+), 9 deletions(-) (limited to 'src/core') diff --git a/src/core/cpu/kernels/CpuElementwiseKernel.cpp b/src/core/cpu/kernels/CpuElementwiseKernel.cpp index 23e95f72d7..4ab62440f3 100644 --- a/src/core/cpu/kernels/CpuElementwiseKernel.cpp +++ b/src/core/cpu/kernels/CpuElementwiseKernel.cpp @@ -187,7 +187,7 @@ void CpuElementwiseKernel::configure_common(const ITensorInfo *src0, const ITens return; } - auto shape_and_window = compute_output_shape_and_window(*src0, *src1); + auto shape_and_window = compute_output_shape_and_window(src0->tensor_shape(), src1->tensor_shape()); auto_init_if_empty(*dst, shape_and_window.first, 1, src0->data_type()); ICpuKernel::configure(shape_and_window.second); } diff --git a/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp b/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp index ff2d080c95..3a96d93c03 100644 --- a/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp +++ b/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp @@ -120,7 +120,7 @@ void CpuElementwiseUnaryKernel::configure(ElementWiseUnary op, const ITensorInfo return; } - auto shape_and_window = compute_output_shape_and_window(src); + auto shape_and_window = compute_output_shape_and_window(src.tensor_shape()); auto_init_if_empty(dst, shape_and_window.first, 1, src.data_type()); ICpuKernel::configure(shape_and_window.second); } diff --git a/src/core/helpers/WindowHelpers.h b/src/core/helpers/WindowHelpers.h index 637e9323ab..dad5da62d3 100644 --- a/src/core/helpers/WindowHelpers.h +++ b/src/core/helpers/WindowHelpers.h @@ -184,14 +184,11 @@ inline Window calculate_max_enlarged_window(const ITensorInfo &info, const Steps * * @return A pair of the shape and window */ -template -std::pair compute_output_shape_and_window(const Infos &... infos) +template +std::pair compute_output_shape_and_window(const Shapes &... shapes) { - const std::pair broadcast_pair = ITensorInfo::broadcast_shape_and_valid_region(infos...); - const TensorShape &out_shape = broadcast_pair.first; - const ValidRegion &valid_region = broadcast_pair.second; - - return std::make_pair(out_shape, calculate_max_window(valid_region)); + const TensorShape out_shape = TensorShape::broadcast_shape(shapes...); + return std::make_pair(out_shape, calculate_max_window(out_shape)); } #endif /* DOXYGEN_SKIP_THIS */ } // namespace arm_compute -- cgit v1.2.1