[rocprofv3] Add rocpd output support (part 1: prelude) (#401)

* [rocprofv3] Add rocpd output support (part 1: prelude)

- git submodules for sqlite3, GOTCHA, and pybind11
- HIP stream data
- rocprofiler_query_intercept_table_name(...)
- serialization load
- rocprofiler::sdk::get_perfetto_category(KindT)
- rocprofiler::sdk::parse::strip
- common library updates
  - md5sum
  - hasher
  - simple_timer
  - static_tl_object
  - get_process_start_time_ns(pid_t)
- output library updates
  - node_info
  - file_generator (generator is now virtual base class)
  - stream info updates

* Added submodules

* Code review updates

* Minor unused-but-set-X warning fixes

* Update CI

- install libsqlite3-dev package

* Update CI

- install libsqlite3-dev package

* Fix static thread-local object memory leak

- also fix signal handler chaining

* Remove URL from comment

* Remove page migration exception

* Enable ROCPROFILER_BUILD_SQLITE3 by default

- try find_package(SQLite3) first and then build when ROCPROFILER_BUILD_SQLITE3=ON

* Fix gotcha installation

- make install of target optional

* Validate tracing + counter collection dispatch data

- i.e. correlation ids, thread ids, timestamps

* Make find_package(SQLite3) optional

- ROCm CI does not have SQLite3 dev package installed and cannot build from source (missing tclsh)

* Fixes to tracing + counter collection test

* get_process_start_time_ns update

- original implementation did not work

* Fix pytest-packages test_perfetto_data for counter collection

- erroneous failure when used with same PMC + multiple agents

* cmake policy: option() honors normal variables

- for GOTCHA submodule

* Improve samples/api_buffered_tracing stability

- reduce likelihood of sporadic exception throw

* Update gotcha submodule

---------

Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
Tento commit je obsažen v:
Madsen, Jonathan
2025-05-18 20:11:26 -05:00
odevzdal GitHub
rodič 65786f619d
revize 7166b1ab58
86 změnil soubory, kde provedl 4120 přidání a 1730 odebrání
+26 -21
Zobrazit soubor
@@ -223,22 +223,26 @@ output_keys(std::string _tag)
}
for(auto&& itr : std::initializer_list<output_key>{
{"%argv%", _argv_string, "Entire command-line condensed into a single string"},
{"%argt%",
{"argv", _argv_string, "Entire command-line condensed into a single string"},
{"argt",
_argt_string,
"Similar to `%argv%` except basename of first command line argument"},
{"%args%", _args_string, "All command line arguments condensed into a single string"},
{"%tag%", _tag0_string, "Basename of first command line argument"}})
{"args", _args_string, "All command line arguments condensed into a single string"},
{"tag", _tag0_string, "Basename of first command line argument"}})
{
_options.emplace_back(itr);
_options.emplace_back(fmt::format("%{}%", itr.key), itr.value, itr.description);
_options.emplace_back(fmt::format("{}{}{}", '{', itr.key, '}'), itr.value, itr.description);
}
if(!_cmdline.empty())
{
for(size_t i = 0; i < _cmdline.size(); ++i)
{
auto _v = _cmdline.at(i);
_options.emplace_back(fmt::format("%arg{}%", i), _v, fmt::format("Argument #{}", i));
auto _v = _cmdline.at(i);
auto itr = output_key{fmt::format("arg{}", i), _v, fmt::format("Argument #{}", i)};
_options.emplace_back(fmt::format("%{}%", itr.key), itr.value, itr.description);
_options.emplace_back(
fmt::format("{}{}{}", '{', itr.key, '}'), itr.value, itr.description);
}
}
@@ -247,22 +251,23 @@ output_keys(std::string _tag)
auto _hostname = get_hostname();
for(auto&& itr : std::initializer_list<output_key>{
{"%hostname%", _hostname, "Network hostname"},
{"%pid%", _proc_id, "Process identifier"},
{"%ppid%", _parent_id, "Parent process identifier"},
{"%pgid%", _pgroup_id, "Process group identifier"},
{"%psid%", _session_id, "Process session identifier"},
{"%psize%", _proc_size, "Number of sibling process"},
{"%job%", _slurm_job_id, "SLURM_JOB_ID env variable"},
{"%rank%", _slurm_proc_id, "MPI/UPC++ rank"},
{"%size%", _dmp_size, "MPI/UPC++ size"},
{"%nid%", _uniq_id, "%rank% if possible, otherwise %pid%"},
{"%cwd%", fs::current_path().string(), "Current working path"},
{"%launch_date%", _launch_date, "Date according to date format ROCPROF_DATE_FORMAT"},
{"%launch_time%", _launch_time, "Date and/or time according to ROCPROF_TIME_FORMAT"},
{"hostname", _hostname, "Network hostname"},
{"pid", _proc_id, "Process identifier"},
{"ppid", _parent_id, "Parent process identifier"},
{"pgid", _pgroup_id, "Process group identifier"},
{"psid", _session_id, "Process session identifier"},
{"psize", _proc_size, "Number of sibling process"},
{"job", _slurm_job_id, "SLURM_JOB_ID env variable"},
{"rank", _slurm_proc_id, "MPI/UPC++ rank"},
{"size", _dmp_size, "MPI/UPC++ size"},
{"nid", _uniq_id, "%rank% if possible, otherwise %pid%"},
{"cwd", fs::current_path().string(), "Current working path"},
{"launch_date", _launch_date, "Date according to date format ROCPROF_DATE_FORMAT"},
{"launch_time", _launch_time, "Date and/or time according to ROCPROF_TIME_FORMAT"},
})
{
_options.emplace_back(itr);
_options.emplace_back(fmt::format("%{}%", itr.key), itr.value, itr.description);
_options.emplace_back(fmt::format("{}{}{}", '{', itr.key, '}'), itr.value, itr.description);
}
for(auto&& itr : std::initializer_list<output_key>{