diff options
author | Sang-Hoon Park <sang-hoon.park@arm.com> | 2021-03-09 10:47:30 +0000 |
---|---|---|
committer | Sang-Hoon Park <sang-hoon.park@arm.com> | 2021-03-10 09:21:19 +0000 |
commit | d0b7b4b1ce489058ea3ad34e29f94d568b4d64eb (patch) | |
tree | 0cb4d3edbd09535754f60d66d526c188e0e71512 | |
parent | 72f13bdaaca9e9c8f6ff340dd675e08926737bba (diff) | |
download | ComputeLibrary-d0b7b4b1ce489058ea3ad34e29f94d568b4d64eb.tar.gz |
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 <sang-hoon.park@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5242
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r-- | src/core/cpu/kernels/CpuElementwiseKernel.cpp | 2 | ||||
-rw-r--r-- | src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp | 2 | ||||
-rw-r--r-- | src/core/helpers/WindowHelpers.h | 11 | ||||
-rw-r--r-- | src/runtime/cpu/operators/CpuElementwise.cpp | 2 | ||||
-rw-r--r-- | src/runtime/cpu/operators/CpuElementwiseUnary.cpp | 2 |
5 files changed, 8 insertions, 11 deletions
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 <typename... Infos> -std::pair<TensorShape, Window> compute_output_shape_and_window(const Infos &... infos) +template <typename... Shapes> +std::pair<TensorShape, Window> compute_output_shape_and_window(const Shapes &... shapes) { - const std::pair<TensorShape, ValidRegion> 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 diff --git a/src/runtime/cpu/operators/CpuElementwise.cpp b/src/runtime/cpu/operators/CpuElementwise.cpp index b5c8dde925..5457825bd5 100644 --- a/src/runtime/cpu/operators/CpuElementwise.cpp +++ b/src/runtime/cpu/operators/CpuElementwise.cpp @@ -40,7 +40,7 @@ void CpuElementwiseBase::run(ITensorPack &tensors) auto src0_info = tensors.get_const_tensor(TensorType::ACL_SRC_0)->info(); auto src1_info = tensors.get_const_tensor(TensorType::ACL_SRC_1)->info(); - auto shape_and_window = compute_output_shape_and_window(*src0_info, *src1_info); + auto shape_and_window = compute_output_shape_and_window(src0_info->tensor_shape(), src1_info->tensor_shape()); ICpuOperator::run(tensors, shape_and_window.second); } diff --git a/src/runtime/cpu/operators/CpuElementwiseUnary.cpp b/src/runtime/cpu/operators/CpuElementwiseUnary.cpp index 2140c5cf78..c79e6e9acf 100644 --- a/src/runtime/cpu/operators/CpuElementwiseUnary.cpp +++ b/src/runtime/cpu/operators/CpuElementwiseUnary.cpp @@ -52,7 +52,7 @@ void CpuElementwiseUnary::run(ITensorPack &tensors) } auto src_info = tensors.get_const_tensor(TensorType::ACL_SRC)->info(); - ICpuOperator::run(tensors, compute_output_shape_and_window(*src_info).second); + ICpuOperator::run(tensors, compute_output_shape_and_window(src_info->tensor_shape()).second); } } // namespace cpu } // namespace arm_compute
\ No newline at end of file |