MLBEDSW-7600: MLCE: Enable cascading for resize ops
- Added fix when building the minimum schedule forcing the stripe
to be even for is_nearest ops. This is required in order to be
able to allow cascading for resize ops.
- Remove limitation in cascade builder that prevents resize ops
to be cascaded.
Change-Id: I05150102b91531ecba786936494f1817a4472f42
Signed-off-by: Johan Alfven <johan.alfven@arm.com>
diff --git a/ethosu/vela/cascade_builder.py b/ethosu/vela/cascade_builder.py
index 95872cf..01bbf3b 100644
--- a/ethosu/vela/cascade_builder.py
+++ b/ethosu/vela/cascade_builder.py
@@ -101,7 +101,6 @@
and sched_op.parent_op.read_offsets[0] is None
and sched_op.parent_op.read_offsets[1] is None
and self.elementwise_cascadable(sched_op)
- and not sched_op.parent_op.type.is_resize_op()
and not sched_op.parent_op.type == Op.Conv2DBackpropInputSwitchedBias
and sched_op.parent_op.attrs.get("padding", None) != Padding.TILE
)
diff --git a/ethosu/vela/scheduler.py b/ethosu/vela/scheduler.py
index 6e2cd4a..2174a6e 100644
--- a/ethosu/vela/scheduler.py
+++ b/ethosu/vela/scheduler.py
@@ -880,6 +880,9 @@
for index, sched_op in enumerate(reversed(self.sched_ops)):
progress_print(verbose_progress, "Processing SchedulerOp", index, self.sched_ops)
min_stripe_height = prev_op.kernel.stride.y if prev_op else 1
+ if is_nearest(sched_op.resampling_mode):
+ # is nearest requires even stripes
+ min_stripe_height += min_stripe_height % 2
min_stripe = sched_op.ofm.shape.with_height(min_stripe_height)
cost = sched_op.create_scheduler_info(self.nng, min_stripe)