diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py index ac1e00bae4c16a66ac2eedd3c6fdc618894eb027..bccff71bd51db0f1994ace424757f253bb93ebd7 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 # }}}