[SDK][rocprofv3] Buffer tracing records with args (HIP) (#285)
* [SDK][rocprofv3] HIP API buffer records with args (ext)
- New buffer tracing domain(s) for HIP APIs which include the arguments and the return value in the buffer records
- Update HIP stream support for extended HIP buffer tracing
- Update rocprofv3 tool library and output library to use extended HIP buffer tracing recods
* Update stream.cpp
- handle hipStream_t address being reused for a new stream
* Update doxygen docs for rocprofiler_iterate_buffer_tracing_record_args
* Update rocprofv3 tool.cpp
- configure buffer tracing services with HIP_*_API_EXT variants
- tweak logging level for hip_stream_display_callback
* Fix validation tests
- add HIP_RUNTIME_API_EXT and HIP_COMPILER_API_EXT to valid domain names
* Serialization support for buffer tracing args
* Disable stream service for __hipPopCallConfiguration
- this is interpreted as a stream create but it doesn't create a stream
* Fix execute_buffer_record_emplace for HIP extended contexts
* Add uint64_t_retval to rocprofiler_hip_api_retval_t union
- reading in hipError_t_retval during serialization of pointer return value causes undefined behavior
* Fix compilation warning about unused but set parameter
- in hip/stream.cpp
* Add synchronization for async_copy_data
* Fix compilation error
* Fix compilation error
---------
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
[ROCm/rocprofiler-sdk commit: e33dff7ad0]
This commit is contained in:
gecommit door
GitHub
bovenliggende
36f4788ad5
commit
8f891cdcc8
@@ -541,12 +541,12 @@ hip_stream_display_callback(rocprofiler_callback_tracing_record_t record,
|
||||
// STREAM_HANDLE_CREATE and DESTROY are no-ops
|
||||
if(record.operation == ROCPROFILER_HIP_STREAM_CREATE)
|
||||
{
|
||||
ROCP_INFO
|
||||
ROCP_TRACE
|
||||
<< "Entered hip_stream_display_callback function for ROCPROFILER_HIP_STREAM_CREATE";
|
||||
}
|
||||
else if(record.operation == ROCPROFILER_HIP_STREAM_DESTROY)
|
||||
{
|
||||
ROCP_INFO
|
||||
ROCP_TRACE
|
||||
<< "Entered hip_stream_display_callback function for ROCPROFILER_HIP_STREAM_DESTROY";
|
||||
}
|
||||
else if(record.operation == ROCPROFILER_HIP_STREAM_SET)
|
||||
@@ -554,15 +554,15 @@ hip_stream_display_callback(rocprofiler_callback_tracing_record_t record,
|
||||
// Push the stream ID onto the stream stack when before underlying HIP function is called
|
||||
if(record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER)
|
||||
{
|
||||
ROCP_INFO << "Entered hip_stream_display_callback function for "
|
||||
"ROCPROFILER_HIP_STREAM_SET with ROCPROFILER_CALLBACK_PHASE_ENTER";
|
||||
ROCP_TRACE << "Entered hip_stream_display_callback function for "
|
||||
"ROCPROFILER_HIP_STREAM_SET with ROCPROFILER_CALLBACK_PHASE_ENTER";
|
||||
rocprofiler::tool::stream::push_stream_id(stream_id);
|
||||
}
|
||||
// Pop stream ID off of stream stack after underlying HIP function is completed
|
||||
else if(record.phase == ROCPROFILER_CALLBACK_PHASE_EXIT)
|
||||
{
|
||||
ROCP_INFO << "Entered hip_stream_display_callback function for "
|
||||
"ROCPROFILER_HIP_STREAM_SET with ROCPROFILER_CALLBACK_PHASE_EXIT";
|
||||
ROCP_TRACE << "Entered hip_stream_display_callback function for "
|
||||
"ROCPROFILER_HIP_STREAM_SET with ROCPROFILER_CALLBACK_PHASE_EXIT";
|
||||
rocprofiler::tool::stream::pop_stream_id();
|
||||
}
|
||||
}
|
||||
@@ -948,11 +948,11 @@ buffered_tracing_callback(rocprofiler_context_id_t /*context*/,
|
||||
|
||||
tool::write_ring_buffer(*record, domain_type::SCRATCH_MEMORY);
|
||||
}
|
||||
else if(header->kind == ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API ||
|
||||
header->kind == ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API)
|
||||
else if(header->kind == ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API_EXT ||
|
||||
header->kind == ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API_EXT)
|
||||
{
|
||||
auto* record =
|
||||
static_cast<rocprofiler_buffer_tracing_hip_api_record_t*>(header->payload);
|
||||
static_cast<rocprofiler_buffer_tracing_hip_api_ext_record_t*>(header->payload);
|
||||
|
||||
tool::write_ring_buffer(*record, domain_type::HIP);
|
||||
}
|
||||
@@ -979,10 +979,18 @@ buffered_tracing_callback(rocprofiler_context_id_t /*context*/,
|
||||
}
|
||||
else
|
||||
{
|
||||
ROCP_FATAL << fmt::format(
|
||||
"unsupported category + kind: {} + {}", header->category, header->kind);
|
||||
ROCP_CI_LOG(WARNING) << fmt::format(
|
||||
"unsupported ROCPROFILER_BUFFER_CATEGORY_TRACING kind: {} :: {}",
|
||||
header->kind,
|
||||
tool_metadata->get_kind_name(
|
||||
static_cast<rocprofiler_buffer_tracing_kind_t>(header->kind)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ROCP_CI_LOG(WARNING) << fmt::format(
|
||||
"unsupported category + kind: {} + {}", header->category, header->kind);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1682,7 +1690,7 @@ tool_init(rocprofiler_client_finalize_t fini_func, void* tool_data)
|
||||
{
|
||||
ROCPROFILER_CALL(rocprofiler_configure_buffer_tracing_service(
|
||||
get_client_ctx(),
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API,
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_RUNTIME_API_EXT,
|
||||
nullptr,
|
||||
0,
|
||||
get_buffers().hip_api_trace),
|
||||
@@ -1693,7 +1701,7 @@ tool_init(rocprofiler_client_finalize_t fini_func, void* tool_data)
|
||||
{
|
||||
ROCPROFILER_CALL(rocprofiler_configure_buffer_tracing_service(
|
||||
get_client_ctx(),
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API,
|
||||
ROCPROFILER_BUFFER_TRACING_HIP_COMPILER_API_EXT,
|
||||
nullptr,
|
||||
0,
|
||||
get_buffers().hip_api_trace),
|
||||
|
||||
Verwijs in nieuw issue
Block a user