|
84 | 84 | font-style: italic;
|
85 | 85 | color: #666;
|
86 | 86 | }
|
| 87 | + |
| 88 | +.layout { |
| 89 | + display: table; |
| 90 | + width: 50%; |
| 91 | + border-spacing: 1em 0.3em; |
| 92 | +} |
| 93 | +.layout > * { display: table-row; } |
| 94 | +.layout > * > * { display: table-cell; } |
| 95 | +.layout .size, .layout .size-x { text-align: center; } |
| 96 | +.layout .size-x { font-weight: bold; color: #888; } |
| 97 | +.layout .semantics { |
| 98 | + font-size: smaller; |
| 99 | + font-weight: bold; |
| 100 | + color: #48c; |
| 101 | + text-transform: uppercase; |
| 102 | + vertical-align: middle; |
| 103 | +} |
| 104 | +.layout .alignment { |
| 105 | + /* Make the background extend outside the box */ |
| 106 | + position: absolute; |
| 107 | + padding: 0.5em; |
| 108 | + margin-top: -0.5em; |
| 109 | + width: 50%; |
| 110 | + box-sizing: border-box; |
| 111 | +} |
87 | 112 | </style>
|
88 | 113 | <template>
|
89 | 114 | <paper-card id="card" heading="[[node.name]]" elevation="2">
|
|
103 | 128 | <div class="unavailable" hidden="[[!node.category]]">
|
104 | 129 | Select items within this category for performace details.
|
105 | 130 | </div>
|
| 131 | + <div hidden="[[!node.xla.layout]]"> |
| 132 | + <b>Layout: </b> |
| 133 | + <div class="layout" hidden="[[!node.xla.layout]]"> |
| 134 | + <template is="dom-repeat" items="[[node.xla.layout.dimensions]]"> |
| 135 | + <div hidden="[[!index]]"><span class="size-x">×</span></div> |
| 136 | + <div> |
| 137 | + <span class="size">[[item.size]]</span> |
| 138 | + <span class="semantics">[[item.semantics]]</span> |
| 139 | + <span class="alignment" style$="background-color:[[_dimensionColor(item)]]">[[_dimensionHint(item)]]</span> |
| 140 | + </div> |
| 141 | + </template> |
| 142 | + </div> |
| 143 | + </div> |
106 | 144 | </div>
|
107 | 145 | </paper-card>
|
108 | 146 | </template>
|
|
133 | 171 | return "Unknown";
|
134 | 172 | },
|
135 | 173 | _fused: function(node){ return node && node.xla && !node.metrics; },
|
| 174 | + _dimensionColor: function(dim) { |
| 175 | + if (!dim || !dim.alignment) return null; |
| 176 | + var ratio = dim.size / dim.alignment; |
| 177 | + // Colors should grade harshly: 50% in a dimension is already very bad. |
| 178 | + var harshCurve = (x) => 1 - Math.sqrt(1 - x); |
| 179 | + return flameColor(ratio / Math.ceil(ratio), 1, 0.25, harshCurve); |
| 180 | + }, |
| 181 | + _dimensionHint: function(dim) { |
| 182 | + if (!dim || !dim.alignment) return null; |
| 183 | + var mul = Math.ceil(dim.size / dim.alignment); |
| 184 | + var mulSuffix = (mul == 1) ? "" : ": " + mul + " × " + dim.alignment; |
| 185 | + if (dim.size % dim.alignment == 0) return "Exact fit" + mulSuffix; |
| 186 | + return "Pad to " + (mul * dim.alignment) + mulSuffix; |
| 187 | + }, |
136 | 188 | });
|
137 | 189 | </script>
|
138 | 190 | </dom-module>
|
0 commit comments