| 27 | |
| 28 | namespace { |
| 29 | xla::StatusOr<absl::optional<xla::OpSharding>> GetShardingFromNodeDef( |
| 30 | const NodeDef& node_def) { |
| 31 | if (!HasNodeAttr(node_def, kShardingAttribute)) { |
| 32 | return absl::optional<xla::OpSharding>(); |
| 33 | } |
| 34 | string value; |
| 35 | xla::OpSharding sharding; |
| 36 | TF_RETURN_IF_ERROR(GetNodeAttr(node_def, kShardingAttribute, &value)); |
| 37 | if (!sharding.ParseFromString(value)) { |
| 38 | return xla::InvalidArgument( |
| 39 | "Experimental _XlaSharding attribute was not a valid encoded " |
| 40 | "xla::OpSharding proto."); |
| 41 | } |
| 42 | return absl::optional<xla::OpSharding>(sharding); |
| 43 | } |
| 44 | |
| 45 | Status CoreOutOfRangeError(int core, int num_cores_per_replica) { |
| 46 | return errors::InvalidArgument( |
no test coverage detected