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

Method RemoveRegularFaninByPort

tensorflow/core/grappler/mutable_graph_view.cc:1123–1164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1121}
1122
1123Status MutableGraphView::RemoveRegularFaninByPort(absl::string_view node_name,
1124 int port) {
1125 auto error_status = [node_name, port](absl::string_view msg) {
1126 string params =
1127 absl::Substitute("node_name='$0', port=$1", node_name, port);
1128 return MutationError("RemoveRegularFaninByPort", params, msg);
1129 };
1130
1131 NodeDef* node = GetNode(node_name);
1132 TF_RETURN_IF_ERROR(CheckNodeExists(node_name, node, error_status));
1133 const int last_regular_fanin_port =
1134 gtl::FindWithDefault(max_regular_input_port(), node, -1);
1135 TF_RETURN_IF_ERROR(
1136 CheckPortRange(port, /*min=*/0, last_regular_fanin_port, error_status));
1137
1138 TensorId tensor_id = ParseTensorName(node->input(port));
1139 OutputPort fanin_port(nodes()[tensor_id.node()], tensor_id.index());
1140 fanouts()[fanin_port].erase({node, port});
1141 auto mutable_inputs = node->mutable_input();
1142 for (int i = port + 1; i <= last_regular_fanin_port; ++i) {
1143 TensorId tensor_id = ParseTensorName(node->input(i));
1144 OutputPort fanin_port(nodes()[tensor_id.node()], tensor_id.index());
1145 absl::flat_hash_set<InputPort>* fanouts_set = &fanouts()[fanin_port];
1146 fanouts_set->erase({node, i});
1147 fanouts_set->insert({node, i - 1});
1148 mutable_inputs->SwapElements(i - 1, i);
1149 }
1150 const int last_node_input = node->input_size() - 1;
1151 if (last_regular_fanin_port < last_node_input) {
1152 mutable_inputs->SwapElements(last_regular_fanin_port, last_node_input);
1153 }
1154 mutable_inputs->RemoveLast();
1155
1156 const int updated_last_regular_input_port = last_regular_fanin_port - 1;
1157 if (updated_last_regular_input_port < 0) {
1158 max_regular_input_port().erase(node);
1159 } else {
1160 max_regular_input_port()[node] = updated_last_regular_input_port;
1161 }
1162
1163 return Status::OK();
1164}
1165
1166bool MutableGraphView::RemoveControllingFaninInternal(NodeDef* node,
1167 NodeDef* fanin_node) {

Callers 1

Calls 11

MutationErrorFunction · 0.85
CheckNodeExistsFunction · 0.85
CheckPortRangeFunction · 0.85
ParseTensorNameFunction · 0.85
inputMethod · 0.45
nodeMethod · 0.45
indexMethod · 0.45
eraseMethod · 0.45
mutable_inputMethod · 0.45
insertMethod · 0.45
input_sizeMethod · 0.45

Tested by 1