diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py index dccaca2ec104a4749289f7cd89c491292f618e3d..622f5e49be1e40b4156113d92907fe8b1d9fb859 100644 --- a/loopy/kernel/__init__.py +++ b/loopy/kernel/__init__.py @@ -1111,7 +1111,8 @@ class LoopKernel(ImmutableRecordWithoutPickling): return embedding - def stringify(self, what=None, with_dependencies=False): + def stringify(self, what=None, with_dependencies=False, use_separators=True, + show_labels=True): all_what = set([ "name", "arguments", @@ -1150,7 +1151,10 @@ class LoopKernel(ImmutableRecordWithoutPickling): kernel = self - sep = 75*"-" + if use_separators: + sep = [75*"-"] + else: + sep = [] def natorder(key): # Return natural ordering for strings, as opposed to dictionary order. @@ -1167,44 +1171,50 @@ class LoopKernel(ImmutableRecordWithoutPickling): return sorted(seq, key=lambda y: natorder(key(y))) if "name" in what: - lines.append(sep) + lines.extend(sep) lines.append("KERNEL: " + kernel.name) if "arguments" in what: - lines.append(sep) - lines.append("ARGUMENTS:") + lines.extend(sep) + if show_labels: + lines.append("ARGUMENTS:") for arg_name in natsorted(kernel.arg_dict): lines.append(str(kernel.arg_dict[arg_name])) if "domains" in what: - lines.append(sep) - lines.append("DOMAINS:") + lines.extend(sep) + if show_labels: + lines.append("DOMAINS:") for dom, parents in zip(kernel.domains, kernel.all_parents_per_domain()): lines.append(len(parents)*" " + str(dom)) if "tags" in what: - lines.append(sep) - lines.append("INAME IMPLEMENTATION TAGS:") + lines.extend(sep) + if show_labels: + lines.append("INAME IMPLEMENTATION TAGS:") for iname in natsorted(kernel.all_inames()): line = "%s: %s" % (iname, kernel.iname_to_tag.get(iname)) lines.append(line) if "variables" in what and kernel.temporary_variables: - lines.append(sep) - lines.append("TEMPORARIES:") + lines.extend(sep) + if show_labels: + lines.append("TEMPORARIES:") for tv in natsorted(six.itervalues(kernel.temporary_variables), key=lambda tv: tv.name): lines.append(str(tv)) if "rules" in what and kernel.substitutions: - lines.append(sep) - lines.append("SUBSTIUTION RULES:") + lines.extend(sep) + if show_labels: + lines.append("SUBSTIUTION RULES:") for rule_name in natsorted(six.iterkeys(kernel.substitutions)): lines.append(str(kernel.substitutions[rule_name])) if "instructions" in what: - lines.append(sep) - lines.append("INSTRUCTIONS:") + lines.extend(sep) + if show_labels: + lines.append("INSTRUCTIONS:") loop_list_width = 35 # {{{ topological sort @@ -1319,18 +1329,20 @@ class LoopKernel(ImmutableRecordWithoutPickling): dep_lines.append("%s : %s" % (insn.id, ",".join(insn.depends_on))) if "Dependencies" in what and dep_lines: - lines.append(sep) - lines.append("DEPENDENCIES: " - "(use loopy.show_dependency_graph to visualize)") + lines.extend(sep) + if show_labels: + lines.append("DEPENDENCIES: " + "(use loopy.show_dependency_graph to visualize)") lines.extend(dep_lines) if "schedule" in what and kernel.schedule is not None: - lines.append(sep) - lines.append("SCHEDULE:") + lines.extend(sep) + if show_labels: + lines.append("SCHEDULE:") from loopy.schedule import dump_schedule lines.append(dump_schedule(kernel, kernel.schedule)) - lines.append(sep) + lines.extend(sep) return "\n".join(lines)