Add support for RCCL tracing (#1047)

* [Draft]: Add support for RCCL tracing

Address comments

* [Draft]: Add support for RCCL tracing

Address PR comments, changes from RCCL upstream

* Add RCCL library table registration

Working on adding support to rocprofiler-register

* Support compilation w/o <rccl/amd_detail/api_trace.h>

- dummy api_trace.h header
- return ROCPROFILER_STATUS_ERROR_NOT_IMPLEMENTED when RCCL does not have api_trace.h header

* RCCL API tracing tool support

- add to rocprofv3
- add to json-tool

---------

Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
This commit is contained in:
Mythreya
2024-09-11 22:42:58 -07:00
committed by GitHub
parent 72cbcedc9e
commit 2a146259c7
43 changed files with 2270 additions and 30 deletions
@@ -575,6 +575,43 @@ generate_csv(tool_table*
}
}
void
generate_csv(tool_table* tool_functions,
const std::deque<rocprofiler_buffer_tracing_rccl_api_record_t>& data,
const stats_entry_t& stats)
{
if(data.empty()) return;
if(tool::get_config().stats && stats)
write_stats(get_stats_output_file("rccl_api_stats"), stats.entries);
auto ofs = tool::output_file{"rccl_api_trace",
tool::csv::api_csv_encoder{},
{"Domain",
"Function",
"Process_Id",
"Thread_Id",
"Correlation_Id",
"Start_Timestamp",
"End_Timestamp"}};
for(const auto& record : data)
{
auto row_ss = std::stringstream{};
auto api_name = tool_functions->tool_get_operation_name_fn(record.kind, record.operation);
rocprofiler::tool::csv::api_csv_encoder::write_row(
row_ss,
tool_functions->tool_get_domain_name_fn(record.kind),
api_name,
getpid(),
record.thread_id,
record.correlation_id.internal,
record.start_timestamp,
record.end_timestamp);
ofs << row_ss.str();
}
}
void
generate_csv(tool_table* /*tool_functions*/, const domain_stats_vec_t& data_v)
{