diff --git a/tensorflow/core/profiler/convert/op_metrics_db_combiner.cc b/tensorflow/core/profiler/convert/op_metrics_db_combiner.cc index b4c856e689c..3f601bb9134 100644 --- a/tensorflow/core/profiler/convert/op_metrics_db_combiner.cc +++ b/tensorflow/core/profiler/convert/op_metrics_db_combiner.cc @@ -28,6 +28,7 @@ void CombineOpMetrics(const OpMetrics& src, OpMetrics* dst) { DCHECK_EQ(src.name(), dst->name()); dst->set_category(src.category()); dst->set_provenance(src.provenance()); + dst->set_is_eager(dst->is_eager() || src.is_eager()); dst->set_deduplicated_name(src.deduplicated_name()); if (!dst->has_layout() && src.has_layout()) { *dst->mutable_layout() = src.layout(); diff --git a/tensorflow/core/profiler/convert/op_stats_to_tf_stats.cc b/tensorflow/core/profiler/convert/op_stats_to_tf_stats.cc index 23561169c4e..da409f89a60 100644 --- a/tensorflow/core/profiler/convert/op_stats_to_tf_stats.cc +++ b/tensorflow/core/profiler/convert/op_stats_to_tf_stats.cc @@ -33,6 +33,7 @@ TfStatsRecord ConvertOpMetricsToTfStatsRecord( double ridge_point_operational_intensity) { TfStatsRecord record; record.set_host_or_device(on_device ? "Device" : "Host"); + record.set_is_eager(metrics.is_eager()); record.set_op_type(metrics.category()); record.set_op_name(metrics.name()); SetExecutionTimes(metrics, &record); diff --git a/tensorflow/core/profiler/protobuf/tf_stats.proto b/tensorflow/core/profiler/protobuf/tf_stats.proto index 0b4cbb77b11..2dae6230f50 100644 --- a/tensorflow/core/profiler/protobuf/tf_stats.proto +++ b/tensorflow/core/profiler/protobuf/tf_stats.proto @@ -69,4 +69,6 @@ message TfStatsRecord { // Whether this operation is "Compute" or "Memory" bound, // according to the Roofline Model. string bound_by = 17; + // Whether this TF-op is eagerly executed. + bool is_eager = 18; } diff --git a/tensorflow/core/profiler/utils/op_utils.cc b/tensorflow/core/profiler/utils/op_utils.cc index cbc16f965d7..74ce13def0a 100644 --- a/tensorflow/core/profiler/utils/op_utils.cc +++ b/tensorflow/core/profiler/utils/op_utils.cc @@ -41,7 +41,7 @@ void HostOpMetricsDbBuilder::EnterOp(absl::string_view name, OpMetrics* op_metrics = LookupOrInsertNewOpMetrics(/*hlo_module_id=*/0, name); if (op_metrics->category().empty()) op_metrics->set_category(category.data(), category.size()); - op_metrics->set_is_eager(is_eager); + op_metrics->set_is_eager(op_metrics->is_eager() || is_eager); op_metrics->set_occurrences(op_metrics->occurrences() + 1); op_metrics->set_time_ps(op_metrics->time_ps() + time_ps); op_metrics->set_self_time_ps(op_metrics->self_time_ps() + self_time_ps); @@ -72,7 +72,7 @@ void DeviceOpMetricsDbBuilder::EnterOp(uint64 program_id, : string(category)); if (op_metrics->provenance().empty()) op_metrics->set_provenance(string(provenance)); - op_metrics->set_is_eager(is_eager); + op_metrics->set_is_eager(op_metrics->is_eager() || is_eager); op_metrics->set_occurrences(op_metrics->occurrences() + occurrences); op_metrics->set_time_ps(op_metrics->time_ps() + time_ps); op_metrics->set_self_time_ps(op_metrics->self_time_ps() + self_time_ps);