From 6b0f87c3a64abfcc042ebe35f7e5bb8dd8745efc Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Tue, 21 Oct 2025 11:20:46 -0500 Subject: [PATCH] [rocprofiler-sdk][rocpd] Optional message field in region/sample extdata (#1170) --- projects/rocprofiler-sdk/external/cereal | 2 +- .../lib/python/rocpd/source/perfetto.cpp | 28 ++++++++++++------- .../source/lib/python/rocpd/source/types.hpp | 8 ++++-- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/projects/rocprofiler-sdk/external/cereal b/projects/rocprofiler-sdk/external/cereal index e736e75d9d..40a30defcb 160000 --- a/projects/rocprofiler-sdk/external/cereal +++ b/projects/rocprofiler-sdk/external/cereal @@ -1 +1 @@ -Subproject commit e736e75d9d8cd4cc01614f21097f185dc2c6a6bc +Subproject commit 40a30defcb8874270a04836d316502b08904b2bc diff --git a/projects/rocprofiler-sdk/source/lib/python/rocpd/source/perfetto.cpp b/projects/rocprofiler-sdk/source/lib/python/rocpd/source/perfetto.cpp index 8790296301..08fcb461a8 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocpd/source/perfetto.cpp +++ b/projects/rocprofiler-sdk/source/lib/python/rocpd/source/perfetto.cpp @@ -376,13 +376,17 @@ write_perfetto( { for(auto itr : region_gen.get(ditr)) { - auto& track = thread_tracks.at(itr.tid); - auto _name = itr.name; + auto& track = thread_tracks.at(itr.tid); + auto _name = itr.name; + auto _operation = itr.name; if(itr.has_extdata()) { - if(auto _extdata = itr.get_extdata(); !_extdata.message.empty()) - _name = _extdata.message; + auto _extdata = itr.get_extdata(); + if(_extdata.message && !_extdata.message->empty()) + _name = _extdata.message.value(); + if(_extdata.operation && !_extdata.operation->empty()) + _operation = _extdata.operation.value(); } auto _category = ::perfetto::DynamicCategory{get_category_string(itr.category)}; @@ -402,7 +406,7 @@ write_perfetto( "kind", itr.category, "operation", - _name, + _operation, "corr_id", itr.stack_id, "ancestor_id", @@ -419,13 +423,17 @@ write_perfetto( { for(auto itr : sample_gen.get(ditr)) { - auto& track = thread_tracks.at(itr.tid); - auto _name = itr.name; + auto& track = thread_tracks.at(itr.tid); + auto _name = itr.name; + auto _operation = itr.name; if(itr.has_extdata()) { - if(auto _extdata = itr.get_extdata(); !_extdata.message.empty()) - _name = _extdata.message; + auto _extdata = itr.get_extdata(); + if(_extdata.message && !_extdata.message->empty()) + _name = _extdata.message.value(); + if(_extdata.operation && !_extdata.operation->empty()) + _operation = _extdata.operation.value(); } auto _category = ::perfetto::DynamicCategory{get_category_string(itr.category)}; @@ -445,7 +453,7 @@ write_perfetto( "kind", itr.category, "operation", - _name, + _operation, "corr_id", itr.stack_id, "ancestor_id", diff --git a/projects/rocprofiler-sdk/source/lib/python/rocpd/source/types.hpp b/projects/rocprofiler-sdk/source/lib/python/rocpd/source/types.hpp index 454ff9ec0d..ac1a6c2f37 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocpd/source/types.hpp +++ b/projects/rocprofiler-sdk/source/lib/python/rocpd/source/types.hpp @@ -196,7 +196,8 @@ struct region { struct decoded_extdata { - std::string message = {}; + std::optional message = {}; + std::optional operation = {}; }; uint64_t id = 0; @@ -222,7 +223,8 @@ struct sample { struct decoded_extdata { - std::string message = {}; + std::optional message = {}; + std::optional operation = {}; }; uint64_t id = 0; @@ -636,6 +638,7 @@ void load(ArchiveT& ar, rocpd::types::region::decoded_extdata& data) { LOAD_DATA_FIELD(message); + LOAD_DATA_FIELD(operation); } template @@ -662,6 +665,7 @@ void load(ArchiveT& ar, rocpd::types::sample::decoded_extdata& data) { LOAD_DATA_FIELD(message); + LOAD_DATA_FIELD(operation); } template