aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Verhaard <louis.verhaard@arm.com>2021-08-19 15:15:36 +0200
committerLouis Verhaard <louis.verhaard@arm.com>2021-08-23 08:06:53 +0200
commitcc34d5d33938b6cbd9f8b11883f12e8c3097b613 (patch)
treecf8bca41de33bf563df8b08d1c76ae46ac9a2db0
parent6f23da6937a6d53263cf922d8f96732df09ff362 (diff)
downloadethos-u-vela-cc34d5d33938b6cbd9f8b11883f12e8c3097b613.tar.gz
MLBEDSW-4976: index errors in scheduler
- Fixed index error in memory_snapshot - When removing a cascade, also references are removed Change-Id: I2b35dc52671d8ce115eb32bfdd93584391d1fc6d Signed-off-by: Louis Verhaard <louis.verhaard@arm.com>
-rw-r--r--ethosu/vela/live_range.py8
-rw-r--r--ethosu/vela/scheduler.py10
2 files changed, 8 insertions, 10 deletions
diff --git a/ethosu/vela/live_range.py b/ethosu/vela/live_range.py
index 7ff1b28d..0b94b197 100644
--- a/ethosu/vela/live_range.py
+++ b/ethosu/vela/live_range.py
@@ -138,15 +138,11 @@ class LiveRangeGraph:
return live_range
def update_endtime(self):
- self.end_time = 0
- for rng in self.ranges.values():
- self.end_time = max(self.end_time, rng.end_time)
+ self.end_time = self.current_time
return self.end_time + 1
def get_temporal_memory_usage(self, target_mem_area):
- if not self.end_time:
- self.update_endtime()
- usage = np.zeros(self.end_time, dtype=np.int32)
+ usage = np.zeros(self.update_endtime(), dtype=np.int32)
for rng in self.ranges.values():
if rng.mem_area == target_mem_area:
# End time is inclusive
diff --git a/ethosu/vela/scheduler.py b/ethosu/vela/scheduler.py
index a375a939..de10bad7 100644
--- a/ethosu/vela/scheduler.py
+++ b/ethosu/vela/scheduler.py
@@ -861,10 +861,12 @@ class Scheduler:
return max_sched
# Extract the cascades
- cascades = [cascade for cascade in schedule.cascades.values()]
- for cascade_info in cascades:
- # Remove existing cascade from schedule
- del schedule.cascades[cascade_info.end]
+ cascades = schedule.cascades
+ # Remove existing cascade from schedule
+ schedule.cascades = {}
+ for cost in schedule.cost_map.values():
+ cost.cascade = 0
+ for cascade_info in cascades.values():
# Optimize the sub-schedule in this cascade
opt_sub_schedule = self.optimize_sub_schedule(cascade_info, schedule, max_template, sram_limit)
# Update the sub-schedule Op and cascade costs to the full schedule