[SDK] Update finalization and correlation ID retirement (#281)

* Update finalization and correlation ID retirement

- directly invoke finalize if only one client
- correlation_id_finalize

* Address PR comments

* Improve logging for correlation_id_finalize

* Fix correlation ID handling in memory allocation service

* Fix clang-tidy issues in hsa-memory-allocation test exe

---------

Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
This commit is contained in:
Madsen, Jonathan
2025-03-20 16:59:23 -05:00
committed by GitHub
parent b21452ec11
commit 91f7f42104
5 changed files with 68 additions and 19 deletions
+9 -2
View File
@@ -31,6 +31,7 @@
#include "lib/rocprofiler-sdk/agent.hpp"
#include "lib/rocprofiler-sdk/code_object/code_object.hpp"
#include "lib/rocprofiler-sdk/context/context.hpp"
#include "lib/rocprofiler-sdk/context/correlation_id.hpp"
#include "lib/rocprofiler-sdk/hip/hip.hpp"
#include "lib/rocprofiler-sdk/hip/stream.hpp"
#include "lib/rocprofiler-sdk/hsa/async_copy.hpp"
@@ -56,6 +57,7 @@
#include <rocprofiler-sdk/hsa.h>
#include <rocprofiler-sdk/marker.h>
#include <rocprofiler-sdk/ompt.h>
#include <rocprofiler-sdk/registration.h>
#include <rocprofiler-sdk/version.h>
#include <hsa/hsa_api_trace.h>
@@ -537,13 +539,17 @@ invoke_client_initializers()
if(!get_clients()) return false;
// if there is only one client, just fully finalize
rocprofiler_client_finalize_t client_fini_func =
(get_clients()->size() == 1) ? [](rocprofiler_client_id_t) -> void { finalize(); }
: &invoke_client_finalizer;
for(auto& itr : *get_clients())
{
if(itr && itr->configure_result && itr->configure_result->initialize)
{
context::push_client(itr->internal_client_id.handle);
itr->configure_result->initialize(&invoke_client_finalizer,
itr->configure_result->tool_data);
itr->configure_result->initialize(client_fini_func, itr->configure_result->tool_data);
context::pop_client(itr->internal_client_id.handle);
// set to nullptr so initialize only gets called once
itr->configure_result->initialize = nullptr;
@@ -722,6 +728,7 @@ finalize()
pc_sampling::code_object::finalize();
#endif
code_object::finalize();
context::correlation_id_finalize();
if(get_init_status() > 0)
{
invoke_client_finalizers();