Do not execute _SOURCE and _SINK nodes on STE.
PiperOrigin-RevId: 442567172
diff --git a/tensorflow/core/common_runtime/single_threaded_executor.cc b/tensorflow/core/common_runtime/single_threaded_executor.cc
index c2f7a26..faf810b 100644
--- a/tensorflow/core/common_runtime/single_threaded_executor.cc
+++ b/tensorflow/core/common_runtime/single_threaded_executor.cc
@@ -94,16 +94,21 @@
ordered_nodes.size());
}
- kernels_.reserve(ordered_nodes.size());
+ // We reserve two less nodes because we do not need to create kernels for
+ // the _SOURCE and _SINK nodes.
+ kernels_.reserve(ordered_nodes.size() - 2);
std::vector<Node*> nodes_with_kernels;
std::vector<Node*> nodes_with_const_tensor_kernels;
- nodes_with_kernels.reserve(ordered_nodes.size());
+ nodes_with_kernels.reserve(ordered_nodes.size() - 2);
std::map<size_t, Node*> arg_index_to_node_map;
absl::flat_hash_map<Node*, size_t> node_to_index_map;
// Create the kernel and input-related structures for each node in `graph`.
for (Node* n : ordered_nodes) {
+ if (n->IsSource() || n->IsSink()) {
+ continue;
+ }
TF_RETURN_IF_ERROR(ValidateOpIsSafeForSyncExecution(
*n, params_.allow_control_flow_sync_execution));
if (n->IsArg()) {