diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2017-12-22 10:35:05 -0800 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-12-22 10:43:28 -0800 |
commit | 87fcd473fba75a6ca8ee8e479116b7baa3296a33 (patch) | |
tree | b1f56b21990f2620828cb328f5acba99053c47d5 /tensorflow/core/grappler/costs/virtual_scheduler.cc | |
parent | 2f484f175a9229d598e81a1803f5db0bbb10e7a3 (diff) |
In FirstReady node manager, use node name as tie-breaker when multiple nodes
have same time_ready.
PiperOrigin-RevId: 179940344
Diffstat (limited to 'tensorflow/core/grappler/costs/virtual_scheduler.cc')
-rw-r--r-- | tensorflow/core/grappler/costs/virtual_scheduler.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tensorflow/core/grappler/costs/virtual_scheduler.cc b/tensorflow/core/grappler/costs/virtual_scheduler.cc index f74ec8cb9f..fce50e33d6 100644 --- a/tensorflow/core/grappler/costs/virtual_scheduler.cc +++ b/tensorflow/core/grappler/costs/virtual_scheduler.cc @@ -118,9 +118,14 @@ FirstReadyManager::FirstReadyManager( : ReadyNodeManager(), node_state_(node_state) { std::make_heap(nodes_.begin(), nodes_.end()); greater_ = [this](const NodeDef* a, const NodeDef* b) -> bool { - // Note: we need a node with minimum time_ready, not - // maximum; hence, using a > b for comparison function. - return node_state_->at(a).time_ready > node_state_->at(b).time_ready; + if (node_state_->at(a).time_ready == node_state_->at(b).time_ready) { + // Use Node name as tie-breaker for deterministic node scheduling. + return a->name().compare(b->name()) > 0; + } else { + // Note: we need a node with minimum time_ready, not + // maximum; hence, using a > b for comparison function. + return node_state_->at(a).time_ready > node_state_->at(b).time_ready; + } }; } |