COMPMID-1438: MobilenetV1 regression.
Alters the ending conditions for y dimension to use the actual end
offset as a bound and not the actual y window as this could be the whole
execution window and can lead to overlapped calculations across threads.
Change-Id: Ic6642bbaa8e85d4a4034a44234d6cb3347a2f4ff
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/142229
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/arm_compute/core/WindowIterator.h b/arm_compute/core/WindowIterator.h
index 13cb9cf..8e58d0c 100644
--- a/arm_compute/core/WindowIterator.h
+++ b/arm_compute/core/WindowIterator.h
@@ -218,7 +218,7 @@
// Shouldn't be possible to reach that point and not have at least one entire row to process
ARM_COMPUTE_ERROR_ON(_w.y().end() == _position.y());
// No leftover: all the rows lefts to process are full width:
- iterate_over_dim1(_w.y().end());
+ iterate_over_dim1(end_y + _w.y().step());
}
else
{
@@ -229,7 +229,7 @@
PRINTF("full rows\n");
//Switch to full row size:
on_new_row_size(_w[0].start(), _w.x().end());
- iterate_over_dim1(_w.y().end() - _w.y().step());
+ iterate_over_dim1(end_y);
}
PRINTF("Final leftover\n");
diff --git a/tests/validation/UNIT/WindowIterator.cpp b/tests/validation/UNIT/WindowIterator.cpp
index 0c1ab12..402cab4 100644
--- a/tests/validation/UNIT/WindowIterator.cpp
+++ b/tests/validation/UNIT/WindowIterator.cpp
@@ -96,7 +96,7 @@
}
DATA_TEST_CASE(PartialWindow2D, framework::DatasetMode::ALL, zip(zip(zip(combine(framework::dataset::make("Window",
- create_window(Window::Dimension(4, 20, 4), Window::Dimension(3, 18, 5), Window::Dimension(1, 2, 1))),
+ create_window(Window::Dimension(4, 20, 4), Window::Dimension(3, 32, 5), Window::Dimension(1, 2, 1))),
framework::dataset::make("Start", { 0, 1, 3, 2, 4 })),
framework::dataset::make("End", { 0, 2, 5, 8, 7 })),
framework::dataset::make("RowSize",