aboutsummaryrefslogtreecommitdiff
path: root/src/core/cpu
diff options
context:
space:
mode:
authorSiCongLi <sicong.li@arm.com>2021-02-22 14:28:33 +0000
committerSiCong Li <sicong.li@arm.com>2021-03-08 09:39:03 +0000
commitc7b1e84ac5f3ada1b2f78c66979ef4d44804a955 (patch)
tree3f2dd18121727cf8000a84ed0030523ce7c0e91e /src/core/cpu
parentb861074c74ea99222207a4a0a71954f8852f8704 (diff)
downloadComputeLibrary-c7b1e84ac5f3ada1b2f78c66979ef4d44804a955.tar.gz
Remove usage of valid window region in NHWC CPU kernels - Part1
Replace all calculate_max_window(ValidRegion, ...) with calculate_max_window(TensorShape, ...) in CPU kernels Resolves COMPMID-4152 (1/2) Change-Id: I7403ea6b24b9e7889890839142a06439d6c8a499 Signed-off-by: SiCongLi <sicong.li@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5202 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/cpu')
-rw-r--r--src/core/cpu/kernels/CpuAddKernel.cpp9
-rw-r--r--src/core/cpu/kernels/CpuElementwiseKernel.cpp6
-rw-r--r--src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp6
-rw-r--r--src/core/cpu/kernels/CpuSubKernel.cpp9
4 files changed, 8 insertions, 22 deletions
diff --git a/src/core/cpu/kernels/CpuAddKernel.cpp b/src/core/cpu/kernels/CpuAddKernel.cpp
index 31c7b2af60..fc88a7e22d 100644
--- a/src/core/cpu/kernels/CpuAddKernel.cpp
+++ b/src/core/cpu/kernels/CpuAddKernel.cpp
@@ -249,9 +249,7 @@ Status validate_arguments(const ITensorInfo &src0, const ITensorInfo &src1, cons
std::pair<Status, Window> validate_and_configure_window(const ITensorInfo &src0, const ITensorInfo &src1, ITensorInfo &dst)
{
- const std::pair<TensorShape, ValidRegion> broadcast_pair = ITensorInfo::broadcast_shape_and_valid_region(src0, src1);
- const TensorShape &out_shape = broadcast_pair.first;
- const ValidRegion &valid_region = broadcast_pair.second;
+ const TensorShape &out_shape = TensorShape::broadcast_shape(src0.tensor_shape(), src1.tensor_shape());
// Auto initialize dst if not initialized
{
@@ -287,12 +285,9 @@ std::pair<Status, Window> validate_and_configure_window(const ITensorInfo &src0,
}
}
- Window win = calculate_max_window(valid_region, Steps());
+ Window win = calculate_max_window(out_shape, Steps());
// CpuAddKernel doesn't need padding so update_window_and_padding() can be skipped
- Coordinates coord;
- coord.set_num_dimensions(dst.num_dimensions());
- dst.set_valid_region(valid_region);
return std::make_pair(Status{}, win);
}
} // namespace
diff --git a/src/core/cpu/kernels/CpuElementwiseKernel.cpp b/src/core/cpu/kernels/CpuElementwiseKernel.cpp
index ab915b9d72..1ac21acbc0 100644
--- a/src/core/cpu/kernels/CpuElementwiseKernel.cpp
+++ b/src/core/cpu/kernels/CpuElementwiseKernel.cpp
@@ -182,14 +182,12 @@ void CpuElementwiseKernel::configure_common(const ITensorInfo *input1, const ITe
ARM_COMPUTE_ERROR_ON_NULLPTR(input1, input2, output);
// Configure kernel window
- const std::pair<TensorShape, ValidRegion> broadcast_pair = ITensorInfo::broadcast_shape_and_valid_region(*input1, *input2);
- const TensorShape &out_shape = broadcast_pair.first;
- const ValidRegion &valid_region = broadcast_pair.second;
+ const TensorShape &out_shape = TensorShape::broadcast_shape(input1->tensor_shape(), input2->tensor_shape());
// Auto initialize output if not initialized
auto_init_if_empty(*output, out_shape, 1, input1->data_type());
- Window win = calculate_max_window(valid_region);
+ Window win = calculate_max_window(out_shape);
ICpuKernel::configure(win);
}
diff --git a/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp b/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp
index d2681bb060..2b5c11f8e1 100644
--- a/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp
+++ b/src/core/cpu/kernels/CpuElementwiseUnaryKernel.cpp
@@ -113,14 +113,12 @@ void CpuElementwiseUnaryKernel::configure(ElementWiseUnary op, const ITensorInfo
ARM_COMPUTE_ERROR_THROW_ON(validate(op, input, output));
// Configure kernel window
- const std::pair<TensorShape, ValidRegion> broadcast_pair = ITensorInfo::broadcast_shape_and_valid_region(input);
- const TensorShape &out_shape = broadcast_pair.first;
- const ValidRegion &valid_region = broadcast_pair.second;
+ const TensorShape &out_shape = TensorShape::broadcast_shape(input.tensor_shape());
// Auto initialize output if not initialized
auto_init_if_empty(output, out_shape, 1, input.data_type());
- Window win = calculate_max_window(valid_region);
+ Window win = calculate_max_window(out_shape);
_op = op;
diff --git a/src/core/cpu/kernels/CpuSubKernel.cpp b/src/core/cpu/kernels/CpuSubKernel.cpp
index a03dcf2353..d7057bbe2b 100644
--- a/src/core/cpu/kernels/CpuSubKernel.cpp
+++ b/src/core/cpu/kernels/CpuSubKernel.cpp
@@ -201,9 +201,7 @@ void CpuSubKernel::configure(const ITensorInfo *src0, const ITensorInfo *src1, I
ARM_COMPUTE_ERROR_ON_NULLPTR(src0, src1, dst);
ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(*src0, *src1, *dst, policy));
- const std::pair<TensorShape, ValidRegion> broadcast_pair = ITensorInfo::broadcast_shape_and_valid_region(*src0, *src1);
- const TensorShape &out_shape = broadcast_pair.first;
- const ValidRegion &valid_region = broadcast_pair.second;
+ const TensorShape &out_shape = TensorShape::broadcast_shape(src0->tensor_shape(), src1->tensor_shape());
// Auto initialize dst if not initialized
set_shape_if_empty(*dst, out_shape);
@@ -211,10 +209,7 @@ void CpuSubKernel::configure(const ITensorInfo *src0, const ITensorInfo *src1, I
_policy = policy;
// CpuSubKernel doesn't need padding so update_window_and_padding() can be skipped
- Coordinates coord;
- coord.set_num_dimensions(dst->num_dimensions());
- dst->set_valid_region(valid_region);
- Window win = calculate_max_window(valid_region, Steps());
+ Window win = calculate_max_window(out_shape, Steps());
ICpuKernel::configure(win);
}