MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / SetupGraph

Method SetupGraph

tensorflow/core/kernels/hexagon/hexagon_control_wrapper.cc:137–310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135
136bool HexagonControlWrapper::Finalize() { return soc_interface_Finalize(); }
137bool HexagonControlWrapper::SetupGraph() {
138 // Copy graph transfer info to modify to adapt hexnn library
139 GraphTransferInfo& graph_transfer_info =
140 graph_transferer_.GetMutableGraphTransferInfo();
141
142 // Overwrite op type of input nodes for hexagon
143 for (const GraphTransferGraphInputNodeInfo& graph_input :
144 graph_transfer_info.graph_input_node_info()) {
145 GraphTransferNodeInfo* node_info =
146 FindNodeInfo(graph_input.name(), &graph_transfer_info);
147 CHECK_NE(node_info, nullptr);
148 }
149
150 // Generate a new output node which is connected to graph output node
151 // TODO(satok): Support multiple output nodes
152 CHECK_EQ(graph_transfer_info.graph_output_node_info_size(), 1);
153 for (const GraphTransferGraphOutputNodeInfo& graph_output :
154 graph_transfer_info.graph_output_node_info()) {
155 const int new_output_node_id = graph_transfer_info.node_info_size() +
156 graph_transfer_info.const_node_info_size() +
157 2 /* offset for ids */;
158 // Register a new output node
159 GraphTransferNodeInfo& new_output_node_info =
160 *graph_transfer_info.add_node_info();
161 new_output_node_info.set_name(OUTPUT_OP_NAME);
162 new_output_node_info.set_node_id(new_output_node_id);
163 new_output_node_info.set_type_name(OUTPUT_OP_NAME);
164 new_output_node_info.set_soc_op_id(
165 HexagonOpsDefinitions::getInstance().GetOpIdFor(OUTPUT_OP_NAME, {}));
166 new_output_node_info.set_padding_id(0 /* PADDING_NA_ID */);
167 new_output_node_info.set_input_count(1);
168 new_output_node_info.set_output_count(0);
169
170 const TensorId tid = ParseTensorName(graph_output.name());
171 const string node_name(tid.first);
172 const int port = tid.second;
173 // Register node input for the new output node
174 const GraphTransferNodeInfo* node_info =
175 FindNodeInfo(node_name, &graph_transfer_info);
176 CHECK_NE(node_info, nullptr);
177 GraphTransferNodeInputInfo& node_input_info =
178 *graph_transfer_info.add_node_input_info();
179 node_input_info.set_node_id(new_output_node_id);
180 GraphTransferNodeInput& node_input = *node_input_info.add_node_input();
181 node_input.set_node_id(node_info->node_id());
182 node_input.set_output_port(port);
183 }
184
185 if (DBG_DUMP_VERIFICATION_STRING) {
186 GraphTransferer gt;
187 gt.SetSerializedGraphTransferInfo(graph_transfer_info.SerializeAsString());
188 gt.DumpVerificationStringOfNodeTransferParams();
189 }
190
191 int inputs_count = 0;
192 int outputs_count = 0;
193 for (const GraphTransferNodeInputInfo& input_params :
194 graph_transfer_info.node_input_info()) {

Calls 15

FindNodeInfoFunction · 0.85
ParseTensorNameFunction · 0.85
FindAlignedPointerFunction · 0.85
set_type_nameMethod · 0.80
c_strMethod · 0.80
node_infoMethod · 0.80

Tested by 1