aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core/Window.inl
diff options
context:
space:
mode:
authorSang-Hoon Park <sang-hoon.park@arm.com>2019-09-17 08:59:09 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2019-09-30 15:33:01 +0000
commitcecb0a75a9de0a12d30f8fabbe16a656c722afa1 (patch)
tree9517b7fd1fa31126c5fbd3e66f4fb9c7e0b9af1b /arm_compute/core/Window.inl
parent879d1313ba69d9ced8424f54ffeea6a3c60496f0 (diff)
downloadComputeLibrary-cecb0a75a9de0a12d30f8fabbe16a656c722afa1.tar.gz
COMPMID-2637 [CL] fix broadcast pixel-wise multiplication with 5D tensors
Broadcast pixel-wise multiplication with 5D tensors is fixed by adding information whether a dimension has been broadcasted to compute correct start offset when adding 3D tensor argument. The testcase that failed is added to the validation test suite. Change-Id: I320876f507012c27b39daae1316f9b69138ed204 Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com> Reviewed-on: https://review.mlplatform.org/c/1994 Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/core/Window.inl')
-rw-r--r--arm_compute/core/Window.inl18
1 files changed, 16 insertions, 2 deletions
diff --git a/arm_compute/core/Window.inl b/arm_compute/core/Window.inl
index eeef3df7b0..589d6bfafc 100644
--- a/arm_compute/core/Window.inl
+++ b/arm_compute/core/Window.inl
@@ -24,11 +24,12 @@
namespace arm_compute
{
inline Window::Window(const Window &src)
- : _dims()
+ : _dims(), _is_broadcasted(utility::generate_array<bool, Coordinates::num_max_dimensions, false>::value)
{
for(size_t i = 0; i < Coordinates::num_max_dimensions; ++i)
{
set(i, src[i]);
+ _is_broadcasted[i] = src.is_broadcasted(i);
}
}
@@ -51,6 +52,19 @@ inline void Window::set(size_t dimension, const Window::Dimension &dim)
_dims[dimension] = dim;
}
+inline void Window::set_broadcasted(size_t dimension)
+{
+ ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions);
+ set(dimension, Dimension(0, 0, 0));
+ _is_broadcasted[dimension] = true;
+}
+
+inline bool Window::is_broadcasted(size_t dimension) const
+{
+ ARM_COMPUTE_ERROR_ON(dimension >= Coordinates::num_max_dimensions);
+ return _is_broadcasted[dimension];
+}
+
inline Window Window::collapse_if_possible(const Window &full_window, const size_t first,
const size_t last, bool *has_collapsed) const
{
@@ -110,7 +124,7 @@ inline Window Window::broadcast_if_dimension_le_one(const TensorShape &shape) co
{
if(shape[d] <= 1)
{
- broadcastWin.set(d, Dimension(0, 0, 0));
+ broadcastWin.set_broadcasted(d);
}
}
return broadcastWin;