[XLA] Don't dump the "contents" of constants with a zero-sized dimension in the HLO...
authorJustin Lebar <jlebar@google.com>
Thu, 1 Mar 2018 17:31:20 +0000 (09:31 -0800)
committerTensorFlower Gardener <gardener@tensorflow.org>
Thu, 1 Mar 2018 17:36:00 +0000 (09:36 -0800)
Previously we'd dump e.g. "{ {}, {}, ... }" for an f32[100, 0], which is
just noise.

PiperOrigin-RevId: 187488625

tensorflow/compiler/xla/service/hlo_graph_dumper.cc

index 2861fec..99c4932 100644 (file)
@@ -782,6 +782,14 @@ string HloDotDumper::GetInstructionNodeInlinedOperands(
   auto stringify_constant = [](const HloInstruction* constant) {
     const auto& shape = constant->shape();
 
+    // If the shape has a dimension of size zero, print it as e.g.
+    // "{} (f32[42, 0, 10])".  The alternative, calling Literal::ToString(),
+    // enumerates all of its empty dimensions (e.g.  "{ { {}, {} }, ..."), which
+    // is just noise.
+    if (ShapeUtil::HasZeroElements(shape)) {
+      return Printf("{} (%s)", ShapeUtil::HumanString(constant->shape()));
+    }
+
     // Print the literal value of constants with <= K elements.
     optional<int64> elem_count;
     if (!ShapeUtil::IsOpaque(shape) && !ShapeUtil::IsTuple(shape)) {