aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/xla/service/hlo_computation.cc
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-10-02 14:35:49 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-10-02 14:39:45 -0700
commit05812d761031b108b43560c90867b96dc4f030eb (patch)
treef3b2307acfd9cb791c1a105ed62927542b8daa58 /tensorflow/compiler/xla/service/hlo_computation.cc
parentc921e45bccac86ce0becc71cedc3da2c702d5c38 (diff)
Fixes for few issues in HloModule::CreateFromProto()
PiperOrigin-RevId: 215460064
Diffstat (limited to 'tensorflow/compiler/xla/service/hlo_computation.cc')
-rw-r--r--tensorflow/compiler/xla/service/hlo_computation.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/tensorflow/compiler/xla/service/hlo_computation.cc b/tensorflow/compiler/xla/service/hlo_computation.cc
index 6ef67ab0a8..c2041c4667 100644
--- a/tensorflow/compiler/xla/service/hlo_computation.cc
+++ b/tensorflow/compiler/xla/service/hlo_computation.cc
@@ -535,6 +535,28 @@ HloComputation::CreateFromProto(
return to_proto_id[a.get()] < to_proto_id[b.get()];
});
+ TF_RETURN_IF_ERROR([&]() -> Status {
+ std::vector<bool> parameters_seen(parameter_count);
+ int parameters_seen_count = 0;
+ for (auto& instruction : instructions) {
+ if (instruction->opcode() == HloOpcode::kParameter) {
+ int64 param_no = instruction->parameter_number();
+ TF_RET_CHECK(param_no >= 0 && param_no < parameter_count)
+ << "Invalid parameter number. Expected [0, " << parameter_count
+ << "), got " << param_no;
+ TF_RET_CHECK(!parameters_seen[param_no])
+ << "Parameter number " << param_no
+ << " already allocated in this computation";
+ parameters_seen[param_no] = true;
+ parameters_seen_count++;
+ }
+ }
+ TF_RET_CHECK(parameters_seen_count == parameter_count)
+ << "Not all parameters in range [0, " << parameter_count
+ << ") were referenced";
+ return Status::OK();
+ }());
+
auto computation = absl::WrapUnique(
new HloComputation(proto.name(), parameter_count, &instructions, root,
/*fusion_instruction=*/nullptr));