| 102 | } // namespace |
| 103 | |
| 104 | void GetComputeGraphBoundaryNodes( |
| 105 | Graph* g, std::unordered_set<Node*>& boundary_node_set) { |
| 106 | // mark compute graph node |
| 107 | std::vector<bool> is_var_relate(g->num_node_ids(), false); |
| 108 | MarkComputeGraph(g, is_var_relate); |
| 109 | |
| 110 | // get boundary node |
| 111 | std::unordered_set<Node*> has_visit_node; |
| 112 | std::queue<Node*> queue; |
| 113 | queue.emplace(g->source_node()); |
| 114 | while (!queue.empty()) { |
| 115 | Node* n = queue.front(); |
| 116 | queue.pop(); |
| 117 | if (has_visit_node.find(n) != has_visit_node.end()) { |
| 118 | continue; |
| 119 | } |
| 120 | |
| 121 | has_visit_node.emplace(n); |
| 122 | DealWithNode(g, n, is_var_relate, queue, has_visit_node, |
| 123 | boundary_node_set); |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | } // namespace graph_util |
| 128 | } // namespace tensorflow |
no test coverage detected