From 16f058b3f6d8a805d75e152fef17ded1169f2346 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Sat, 30 May 2020 21:52:38 -0500 Subject: [PATCH] Use pytools.compute_topological_order Closes #111 on github --- loopy/kernel/tools.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py index ac1e00bae..bccff71bd 100644 --- a/loopy/kernel/tools.py +++ b/loopy/kernel/tools.py @@ -1422,21 +1422,15 @@ def draw_dependencies_as_unicode_arrows( def stringify_instruction_list(kernel): # {{{ topological sort - printed_insn_ids = set() - printed_insn_order = [] + from pytools.graph import compute_topological_order - def insert_insn_into_order(insn): - if insn.id in printed_insn_ids: - return - printed_insn_ids.add(insn.id) - - for dep_id in natsorted(insn.depends_on): - insert_insn_into_order(kernel.id_to_insn[dep_id]) + dep_graph = {} + for insn in kernel.instructions: + dep_graph[insn.id] = natsorted(insn.depends_on) - printed_insn_order.append(insn) + printed_insn_order = compute_topological_order(dep_graph) - for insn in kernel.instructions: - insert_insn_into_order(insn) + del dep_graph # }}} -- GitLab