diff options
author | Benoit Steiner <bsteiner@google.com> | 2017-07-21 15:30:28 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-07-21 15:34:22 -0700 |
commit | 10b6f290b71e684f85afc1790696d5032f29ed40 (patch) | |
tree | 4b654154028efe90b66c231addb7ea40ad59e45a /tensorflow/core/grappler/costs/virtual_scheduler.cc | |
parent | 9513728ada1bb5aa571e477cb777027efb41b0fe (diff) |
Properly schedule merge nodes.
PiperOrigin-RevId: 162792987
Diffstat (limited to 'tensorflow/core/grappler/costs/virtual_scheduler.cc')
-rw-r--r-- | tensorflow/core/grappler/costs/virtual_scheduler.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/tensorflow/core/grappler/costs/virtual_scheduler.cc b/tensorflow/core/grappler/costs/virtual_scheduler.cc index 8b51bb9096..5c1d85d749 100644 --- a/tensorflow/core/grappler/costs/virtual_scheduler.cc +++ b/tensorflow/core/grappler/costs/virtual_scheduler.cc @@ -516,7 +516,11 @@ bool VirtualScheduler::MarkCurrNodeExecuted(const Costs& node_costs) { for (auto* output_node : port_num_output_pair.second) { auto& output_state = node_map_[output_node]; output_state.num_inputs_ready++; - if (output_state.num_inputs_ready == output_state.inputs.size()) { + // Execute a node as soon as all its inputs are ready. Merge nodes are + // special since they run as soon as one of their inputs becomes + // available. + if (output_state.num_inputs_ready == output_state.inputs.size() || + IsMerge(*output_node)) { // This output node is now ready. output_state.time_ready = curr_time; ready_nodes_->AddNode(output_node); |