aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ethosu/vela/high_level_command_stream.py2
-rw-r--r--ethosu/vela/scheduler.py10
2 files changed, 4 insertions, 8 deletions
diff --git a/ethosu/vela/high_level_command_stream.py b/ethosu/vela/high_level_command_stream.py
index 8a28f9f6..30e22ffe 100644
--- a/ethosu/vela/high_level_command_stream.py
+++ b/ethosu/vela/high_level_command_stream.py
@@ -104,7 +104,7 @@ class Box:
# Adjust for upscaling
new_start_coord[-3] = max(new_start_coord[-3] // upscaling_factor, 0)
new_end_coord[-3] = new_end_coord[-3] * stride + skirt[2] + (skirt[2] % upscaling_factor)
- new_end_coord[-3] = min(new_end_coord[-3] // upscaling_factor, ifm_shape[-3])
+ new_end_coord[-3] = max(min(new_end_coord[-3] // upscaling_factor, ifm_shape[-3]), 1)
return Box(new_start_coord, new_end_coord), pad_top, pad_bottom
diff --git a/ethosu/vela/scheduler.py b/ethosu/vela/scheduler.py
index 943c590c..7347b5a8 100644
--- a/ethosu/vela/scheduler.py
+++ b/ethosu/vela/scheduler.py
@@ -557,12 +557,6 @@ class DynamicProgrammingScheduler:
return strat_data
- def avoid_ifm_streaming(self, ps):
- for op in ps.ops:
- if op.type in (Op.Conv2DBackpropInputSwitchedBias, Op.ResizeBilinear):
- return True
- return False
-
@lru_cache(maxsize=None)
def search_output(self, ps):
@@ -571,7 +565,7 @@ class DynamicProgrammingScheduler:
candidate_list.extend(self.search_weight_streaming_output(ps))
- if self.options.use_ifm_streaming and not self.avoid_ifm_streaming(ps):
+ if self.options.use_ifm_streaming:
candidate_list.extend(self.search_ifm_streaming_output(ps))
best = self.filter_pareto_frontier(candidate_list, remove_equally_good_candidates=True)
@@ -657,6 +651,8 @@ class DynamicProgrammingScheduler:
if len(op.outputs) > 1 or len(op.outputs[0].consumer_list) > 1:
# The op has consumers in other subgraphs
return True
+ if op.type == Op.ResizeBilinear:
+ return True
return False
def search_ifm_streaming_partial(self, ps, block_config):