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

Method UpdateRegularFaninByPort

tensorflow/core/grappler/mutable_graph_view.cc:1332–1374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1330}
1331
1332Status MutableGraphView::UpdateRegularFaninByPort(absl::string_view node_name,
1333 int port,
1334 const TensorId& fanin) {
1335 auto error_status = [node_name, port, fanin](absl::string_view msg) {
1336 string params = absl::Substitute("node_name='$0', port=$1, fanin='$2'",
1337 node_name, port, fanin.ToString());
1338 return MutationError("UpdateRegularFaninByPort", params, msg);
1339 };
1340
1341 TF_RETURN_IF_ERROR(CheckFaninIsRegular(fanin, error_status));
1342 TF_RETURN_IF_ERROR(CheckAddingFaninToSelf(node_name, fanin, error_status));
1343 NodeDef* node = GetNode(node_name);
1344 TF_RETURN_IF_ERROR(CheckNodeExists(node_name, node, error_status));
1345 const int last_regular_fanin_port =
1346 gtl::FindWithDefault(max_regular_input_port(), node, -1);
1347 TF_RETURN_IF_ERROR(
1348 CheckPortRange(port, /*min=*/0, last_regular_fanin_port, error_status));
1349 NodeDef* fanin_node = GetNode(fanin.node());
1350 TF_RETURN_IF_ERROR(CheckNodeExists(fanin.node(), fanin_node, error_status));
1351
1352 TensorId tensor_id = ParseTensorName(node->input(port));
1353 if (tensor_id == fanin) {
1354 return Status::OK();
1355 }
1356
1357 InputPort input(node, port);
1358 OutputPort from_fanin_port(nodes()[tensor_id.node()], tensor_id.index());
1359 absl::flat_hash_set<InputPort>* from_fanouts = &fanouts()[from_fanin_port];
1360 from_fanouts->erase(input);
1361 UpdateMaxRegularOutputPortForRemovedFanin(from_fanin_port, *from_fanouts);
1362
1363 OutputPort to_fanin_port(fanin_node, fanin.index());
1364 fanouts()[to_fanin_port].insert(input);
1365 UpdateMaxRegularOutputPortForAddedFanin(to_fanin_port);
1366
1367 node->set_input(port, TensorIdToString(fanin));
1368
1369 if (CanDedupControlWithRegularInput(*this, *fanin_node)) {
1370 RemoveControllingFaninInternal(node, fanin_node);
1371 }
1372
1373 return Status::OK();
1374}
1375
1376Status MutableGraphView::SwapRegularFaninsByPorts(absl::string_view node_name,
1377 int from_port, int to_port) {

Callers 4

TESTFunction · 0.80
MutateBatchSizeFunction · 0.80

Calls 15

MutationErrorFunction · 0.85
CheckFaninIsRegularFunction · 0.85
CheckAddingFaninToSelfFunction · 0.85
CheckNodeExistsFunction · 0.85
CheckPortRangeFunction · 0.85
ParseTensorNameFunction · 0.85
set_inputMethod · 0.80
TensorIdToStringFunction · 0.70
ToStringMethod · 0.45
nodeMethod · 0.45
inputMethod · 0.45

Tested by 2

TESTFunction · 0.64