aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar David Majnemer <majnemer@google.com>2017-08-31 14:45:25 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-08-31 14:52:26 -0700
commit91617d22fc5868948a361e04a0642a765a092544 (patch)
treef101ad3daec816c6a84674642c88fc6154b7a255
parent569af010a7faf0744fd366648a8c4b3bf18e35c3 (diff)
[XLA] Dump nested fusion nodes without crashing
PiperOrigin-RevId: 167194247
-rw-r--r--tensorflow/compiler/xla/service/hlo_graph_dumper.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/tensorflow/compiler/xla/service/hlo_graph_dumper.cc b/tensorflow/compiler/xla/service/hlo_graph_dumper.cc
index dfb111d1d0..07b3369d5c 100644
--- a/tensorflow/compiler/xla/service/hlo_graph_dumper.cc
+++ b/tensorflow/compiler/xla/service/hlo_graph_dumper.cc
@@ -561,13 +561,21 @@ tooltip = " ";
}
string comp_body = DumpComputation(subcomp);
- string computation =
- Printf(computation_fmt, id, style, subcomp_label, comp_body, id);
- // Add an edge from the subcomputation to its parent node. If subcomp
- // belongs to a fusion node, it's drawn in place of the fusion instruction, so
- // there's no need to link those.
- if (parent_instr->opcode() != HloOpcode::kFusion) {
+ if (parent_instr->opcode() == HloOpcode::kFusion) {
+ // Dump any nested fusion nodes.
+ for (const auto& subcomp_instr : subcomp->instructions()) {
+ if (subcomp_instr->opcode() == HloOpcode::kFusion) {
+ StrAppend(
+ &comp_body,
+ DumpSubcomputation(subcomp_instr->fused_instructions_computation(),
+ subcomp_instr.get()));
+ }
+ }
+ } else {
+ // Add an edge from the subcomputation to its parent node. If subcomp
+ // belongs to a fusion node, it's drawn in place of the fusion instruction,
+ // so there's no need to link those.
edge_ids_.insert(
{{subcomp->root_instruction(), parent_instr}, next_edge_id_++});
const char* edge_fmt =
@@ -578,6 +586,9 @@ tooltip = " ";
subcomp->name(), parent_instr->name()));
}
+ string computation =
+ Printf(computation_fmt, id, style, subcomp_label, comp_body, id);
+
return computation;
}