rocprofiler_kernel_dispatch_info_t + header record for buffered counter collection (#758)
* Update include/rocprofiler-sdk
- defines.h
- ROCPROFILER_VERSION_10_0 -> ROCPROFILER_SDK_VERSION_0_0
- fwd.h
- rocprofiler_counter_record_kind_t
- rocprofiler_kernel_dispatch_info_t
- rocprofiler_record_counter_t
- has dispatch id instead of correlation id
- rocprofiler_counter_info_v0_t
- added rocprofiler_counter_id_t field
- added is_constant field
- reordered better packing
- dispatch_profile.h
- added rocprofiler_profile_counting_dispatch_record_t for use as a header record for rocprofiler_profile_counting_dispatch_data_t
- callback_tracing.h
- rocprofiler_callback_tracing_kernel_dispatch_data_t uses rocprofiler_kernel_dispatch_info_t
- buffer_tracing.h
- rocprofiler_buffer_tracing_kernel_dispatch_record_t uses rocprofiler_kernel_dispatch_info_t
* Update lib/rocprofiler-sdk/*
- transition to rocprofiler_kernel_dispatch_info_t
- set id and is_constant values for rocprofiler_counter_info_v0_t in rocprofiler_query_counter_info
* Update lib/rocprofiler-sdk-tool
- transition to rocprofiler_kernel_dispatch_info_t
* Update lib/rocprofiler-sdk/counters/tests/core.cpp
- transition to rocprofiler_kernel_dispatch_info_t
* Update samples
- transition to rocprofiler_kernel_dispatch_info_t
- transition to rocprofiler_counter_record_kind_t
* Update tests
- transition to rocprofiler_kernel_dispatch_info_t
- transition to rocprofiler_counter_record_kind_t
- improve integration test validation for counter-collection
- update serialization for new/additional types
* Fix tests/counter-collection/validate.py
- loosen restrictions on the length of counter description
* Update include/rocprofiler-sdk/buffer_tracing.h
- remove accidental packed attribute
* Update lib/rocprofiler-sdk/counters/xml/derived_counters.xml
- Add description for TCC_TAG_STALL_sum (reference: https://rocm.docs.amd.com/en/develop/conceptual/gpu-arch/mi300-mi200-performance-counters.html)
* Update tests/page-migration/validate.py
Cette révision appartient à :
révisé par
GitHub
Parent
fd3d97287c
révision
07537b6231
@@ -326,19 +326,23 @@ queue_cb(const context::context* ctx,
|
||||
auto dispatch_data =
|
||||
common::init_public_api_struct(rocprofiler_profile_counting_dispatch_data_t{});
|
||||
|
||||
dispatch_data.kernel_id = kernel_id;
|
||||
dispatch_data.dispatch_id = dispatch_id;
|
||||
dispatch_data.agent_id = CHECK_NOTNULL(queue.get_agent().get_rocp_agent())->id;
|
||||
dispatch_data.queue_id = queue.get_id();
|
||||
dispatch_data.correlation_id = _corr_id_v;
|
||||
dispatch_data.private_segment_size = pkt.kernel_dispatch.private_segment_size;
|
||||
dispatch_data.group_segment_size = pkt.kernel_dispatch.group_segment_size;
|
||||
dispatch_data.workgroup_size = {pkt.kernel_dispatch.workgroup_size_x,
|
||||
pkt.kernel_dispatch.workgroup_size_y,
|
||||
pkt.kernel_dispatch.workgroup_size_z};
|
||||
dispatch_data.grid_size = {pkt.kernel_dispatch.grid_size_x,
|
||||
pkt.kernel_dispatch.grid_size_y,
|
||||
pkt.kernel_dispatch.grid_size_z};
|
||||
dispatch_data.correlation_id = _corr_id_v;
|
||||
{
|
||||
auto dispatch_info = common::init_public_api_struct(rocprofiler_kernel_dispatch_info_t{});
|
||||
dispatch_info.kernel_id = kernel_id;
|
||||
dispatch_info.dispatch_id = dispatch_id;
|
||||
dispatch_info.agent_id = CHECK_NOTNULL(queue.get_agent().get_rocp_agent())->id;
|
||||
dispatch_info.queue_id = queue.get_id();
|
||||
dispatch_info.private_segment_size = pkt.kernel_dispatch.private_segment_size;
|
||||
dispatch_info.group_segment_size = pkt.kernel_dispatch.group_segment_size;
|
||||
dispatch_info.workgroup_size = {pkt.kernel_dispatch.workgroup_size_x,
|
||||
pkt.kernel_dispatch.workgroup_size_y,
|
||||
pkt.kernel_dispatch.workgroup_size_z};
|
||||
dispatch_info.grid_size = {pkt.kernel_dispatch.grid_size_x,
|
||||
pkt.kernel_dispatch.grid_size_y,
|
||||
pkt.kernel_dispatch.grid_size_z};
|
||||
dispatch_data.dispatch_info = dispatch_info;
|
||||
}
|
||||
|
||||
info->user_cb(dispatch_data, &req_profile, user_data, info->callback_args);
|
||||
|
||||
@@ -441,6 +445,7 @@ completed_cb(const context::context* ctx,
|
||||
}
|
||||
}
|
||||
|
||||
auto _dispatch_id = session.callback_record.dispatch_info.dispatch_id;
|
||||
for(auto& ast : prof_config->asts)
|
||||
{
|
||||
std::vector<std::unique_ptr<std::vector<rocprofiler_record_counter_t>>> cache;
|
||||
@@ -448,35 +453,47 @@ completed_cb(const context::context* ctx,
|
||||
CHECK(ret);
|
||||
ast.set_out_id(*ret);
|
||||
|
||||
out.reserve(out.size() + ret->size());
|
||||
for(auto& val : *ret)
|
||||
{
|
||||
val.correlation_id = _corr_id_v;
|
||||
if(buf)
|
||||
buf->emplace(ROCPROFILER_BUFFER_CATEGORY_COUNTERS, 0, val);
|
||||
else
|
||||
out.push_back(val);
|
||||
val.dispatch_id = _dispatch_id;
|
||||
out.emplace_back(val);
|
||||
}
|
||||
}
|
||||
|
||||
if(!out.empty())
|
||||
{
|
||||
CHECK(info->record_callback);
|
||||
if(buf)
|
||||
{
|
||||
auto _header =
|
||||
common::init_public_api_struct(rocprofiler_profile_counting_dispatch_record_t{});
|
||||
_header.num_records = out.size();
|
||||
_header.correlation_id = _corr_id_v;
|
||||
_header.dispatch_info = session.callback_record.dispatch_info;
|
||||
buf->emplace(ROCPROFILER_BUFFER_CATEGORY_COUNTERS,
|
||||
ROCPROFILER_COUNTER_RECORD_PROFILE_COUNTING_DISPATCH_HEADER,
|
||||
_header);
|
||||
|
||||
auto dispatch_data =
|
||||
common::init_public_api_struct(rocprofiler_profile_counting_dispatch_data_t{});
|
||||
for(auto itr : out)
|
||||
buf->emplace(
|
||||
ROCPROFILER_BUFFER_CATEGORY_COUNTERS, ROCPROFILER_COUNTER_RECORD_VALUE, itr);
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK(info->record_callback);
|
||||
|
||||
dispatch_data.kernel_id = session.callback_record.kernel_id;
|
||||
dispatch_data.dispatch_id = session.callback_record.dispatch_id;
|
||||
dispatch_data.agent_id = session.callback_record.agent_id;
|
||||
dispatch_data.queue_id = session.callback_record.queue_id;
|
||||
dispatch_data.correlation_id = _corr_id_v;
|
||||
dispatch_data.private_segment_size = session.callback_record.private_segment_size;
|
||||
dispatch_data.group_segment_size = session.callback_record.group_segment_size;
|
||||
dispatch_data.workgroup_size = session.callback_record.workgroup_size;
|
||||
dispatch_data.grid_size = session.callback_record.grid_size;
|
||||
auto dispatch_data =
|
||||
common::init_public_api_struct(rocprofiler_profile_counting_dispatch_data_t{});
|
||||
|
||||
info->record_callback(
|
||||
dispatch_data, out.data(), out.size(), session.user_data, info->record_callback_args);
|
||||
dispatch_data.dispatch_info = session.callback_record.dispatch_info;
|
||||
dispatch_data.correlation_id = _corr_id_v;
|
||||
|
||||
info->record_callback(dispatch_data,
|
||||
out.data(),
|
||||
out.size(),
|
||||
session.user_data,
|
||||
info->record_callback_args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Référencer dans un nouveau ticket
Bloquer un utilisateur