aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/grappler/costs/virtual_scheduler.cc
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <bsteiner@google.com>2017-07-21 15:30:28 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-07-21 15:34:22 -0700
commit10b6f290b71e684f85afc1790696d5032f29ed40 (patch)
tree4b654154028efe90b66c231addb7ea40ad59e45a /tensorflow/core/grappler/costs/virtual_scheduler.cc
parent9513728ada1bb5aa571e477cb777027efb41b0fe (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.cc6
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);