[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:
@@ -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>{
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele