| 194 | } |
| 195 | |
| 196 | absl::optional<absl::string_view> GetXlaClusterForNode(const Node& node) { |
| 197 | const AttrValue* attr_value = node.attrs().Find(kXlaClusterAttr); |
| 198 | if (attr_value == nullptr) { |
| 199 | return absl::nullopt; |
| 200 | } |
| 201 | Status s = AttrValueHasType(*attr_value, "string"); |
| 202 | if (!s.ok()) { |
| 203 | return absl::nullopt; |
| 204 | } |
| 205 | return attr_value->s(); |
| 206 | } |
| 207 | |
| 208 | bool HasResourceInputOrOutput(const Node& node) { |
| 209 | return std::find(node.input_types().begin(), node.input_types().end(), |