From 23142519fa1e6317c136d5e57e355278426978c1 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Wed, 12 Aug 2015 23:42:29 -0500
Subject: [PATCH] Scheduling heuristic: Try to leave active groups

---
 loopy/schedule.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/loopy/schedule.py b/loopy/schedule.py
index 113819b9a..44df6d2cd 100644
--- a/loopy/schedule.py
+++ b/loopy/schedule.py
@@ -422,9 +422,12 @@ def generate_loop_schedules_internal(
     reachable_insn_ids = set()
     active_groups = frozenset(sched_state.active_group_counts)
 
+    def insn_sort_key(insn_id):
+        insn = kernel.id_to_insn[insn_id]
+        return (insn.priority, len(active_groups & insn.groups))
+
     for insn_id in sorted(sched_state.unscheduled_insn_ids,
-            key=lambda insn_id: kernel.id_to_insn[insn_id].priority,
-            reverse=True):
+            key=insn_sort_key, reverse=True):
 
         insn = kernel.id_to_insn[insn_id]
 
-- 
GitLab