Small tidy-up. Fix the comment on the combination of CSE and control flow.

Change: 139540050
This commit is contained in:
Yuan Yu 2016-11-17 20:16:14 -08:00 committed by TensorFlower Gardener
parent 2eabf986b0
commit bcdb8eb5ae
2 changed files with 3 additions and 11 deletions

View File

@ -919,15 +919,6 @@ class ExecutorState {
void FindOrCreateChildFrame(FrameState* frame, int64 iter, const Node* node,
FrameState** child);
// Get the output frame/iter of a node. Create new frame/iteration if
// needed. If there are dead roots for the new iteration, we need to
// "execute" them so add them to the ready queue. Returns true if
// we need to check for the completion of output frame/iter.
void FindOrCreateOutputFrameIter(const TaggedNode& tagged_node,
const EntryVector& outputs,
FrameState** frame, int64* iter,
TaggedNodeSeq* ready);
// Delete a frame. Called when the frame is done.
void DeleteFrame(FrameState* frame, TaggedNodeSeq* ready);

View File

@ -183,8 +183,9 @@ bool OptimizerCSE::Equivalent(const Node* a, const Node* b, Scratch* scratch) {
bool OptimizerCSE::Optimize(std::function<bool(const Node*)> consider_fn) {
// This very simple implementation works if the whole graph is one
// giant basic block (because we just traverse nodes in a
// topological order). We'll need to do something more
// sophisticated when we have control flow/loops/etc.
// topological order). This simple implementation works well
// with control flow/loops/etc. But we need to be careful about
// control flow if we want to add more sophisticated CSE optimizations.
// TODO(jeff): We need to handle Update nodes specially, but dealing
// with more general control flow will also solve this issue, and for