Review changes
authorSami Kama <skama@nvidia.com>
Wed, 30 May 2018 22:08:34 +0000 (15:08 -0700)
committerSami Kama <skama@nvidia.com>
Wed, 30 May 2018 22:08:34 +0000 (15:08 -0700)
tensorflow/contrib/tensorrt/convert/convert_graph.cc
tensorflow/contrib/tensorrt/convert/convert_nodes.cc

index 5f79f6d..da4dd5a 100644 (file)
@@ -186,7 +186,10 @@ struct ConvertGraphParams {
 static tensorflow::Status FillSubGraphEdgeSets(ConvertGraphParams* p) {
   GetSubGraphIncomingEdges(p->graph, p->subgraph_node_ids,
                            &p->subgraph_incoming_edges);
+
   std::set<std::pair<int, int>> unique_tensors;
+  // Add only unique input source nodes. If output of an outside node is shared
+  // between multiple nodes inside the engine, only one edge should be created
   for (const tensorflow::Edge* edge : p->subgraph_incoming_edges) {
     unique_tensors.insert({edge->src()->id(), edge->src_output()});
   }
@@ -195,6 +198,9 @@ static tensorflow::Status FillSubGraphEdgeSets(ConvertGraphParams* p) {
   GetSubGraphOutgoingEdges(p->graph, p->subgraph_node_ids,
                            &p->subgraph_outgoing_edges);
   unique_tensors.clear();
+  // Similar to above, if multiple ouside nodes are sharing the output of an
+  // internal node only one output port should be created and shared between
+  // outputs
   for (const tensorflow::Edge* edge : p->subgraph_outgoing_edges) {
     unique_tensors.insert({edge->src()->id(), edge->src_output()});
   }
@@ -222,7 +228,6 @@ tensorflow::Status GetCalibNode(ConvertGraphParams* params) {
   for (auto in_edge :
        params->subgraph_incoming_edges) {  // loop over incoming edges and
                                            // attach them to calib node
-    // tensorflow::Node* src_node = in_edge->src();
     auto src_output = in_edge->src_output();
     auto dst_node = in_edge->dst();
     auto dst_input = in_edge->dst_input();
@@ -280,7 +285,6 @@ tensorflow::Status ConvertSubGraphToTensorRT(ConvertGraphParams* params) {
     subgraph_edge_to_output_map.insert({params->subgraph_outputs.at(i), i});
   }
   TF_RETURN_IF_ERROR(status);
-  unique_tensors.clear();
   for (const tensorflow::Edge* edge : params->subgraph_outgoing_edges) {
     std::pair<int, int> old_src = {edge->src()->id(), edge->src_output()};
     int new_src_output = subgraph_edge_to_output_map.at(old_src);
index 4026ad7..21e6092 100644 (file)
@@ -2176,7 +2176,7 @@ tensorflow::Status ConvertCalibrationNodeToEngineNode(
     VLOG(2) << node_names;
   }
 
-  VLOG(0) << "Output Nodes:";
+  VLOG(1) << "Output Nodes:";
   std::vector<tensorflow::DataType> out_types;
   std::vector<const tensorflow::Edge*> out_edges;
 
@@ -2298,11 +2298,11 @@ tensorflow::Status ConvertCalibrationNodeToEngineNode(
         graph.UpdateEdge(trt_engine_node, out_port, i->dst(), i->dst_input()));
   }
   for (const auto ed : trt_engine_node->in_edges()) {
-    VLOG(0) << "In Edge  " << ed->src()->name() << ":" << ed->src_output()
+    VLOG(1) << "In Edge  " << ed->src()->name() << ":" << ed->src_output()
             << " -> " << ed->dst()->name() << ":" << ed->dst_input();
   }
   for (const auto ed : trt_engine_node->out_edges()) {
-    VLOG(0) << "Out Edge " << ed->src()->name() << ":" << ed->src_output()
+    VLOG(1) << "Out Edge " << ed->src()->name() << ":" << ed->src_output()
             << " -> " << ed->dst()->name() << ":" << ed->dst_input();
   }
   VLOG(1) << "Segment nodes:";