Update correlation id definition + status strings + const active contexts (#127)
* Update include/rocprofiler
- remove rocprofiler_external_correlation_id_t
- redefine rocprofiler_correlation_id_t to include internal id and external user data
- associate rocprofiler_push_external_correlation_id and rocprofiler_pop_external_correlation_id with a context
* Update include/rocprofiler/rocprofiler.h
- rocprofiler_get_status_name
- rocprofiler_get_status_string
* Update lib/rocprofiler/rocprofiler.cpp
- implement rocprofiler_get_status_name and rocprofiler_get_status_string
* Update lib/rocprofiler/tests/status.cpp
- unit test for status string and name
* Update lib/rocprofiler/tests/registration.cpp
- update to new rocprofiler_correlation_id_t
* Update samples
- update to new rocprofiler_correlation_id_t
* Add lib/rocprofiler/external_correlation.cpp
- placeholder for external correlation push/pop
* Update lib/rocprofiler/hsa/agent_cache.cpp
- slight tweak to when HSA_AMD_AGENT_INFO_NEAREST_CPU is defined
* Update context implementation and hsa.cpp
- get_active_contexts is array of const context pointers
- update hsa_api_impl<Idx>::functor to new rocprofiler_correlation_id_t
* Update include/rocprofiler/fwd.h
- add ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENT
- reorder enum for consistency
* Update include/rocprofiler/external_correlation.h
- doxygen comments
- thread id parameter
* Update include/rocprofiler/rocprofiler.h
- add rocprofiler_get_thread_id function (needed for external corr id)
* Update lib/common/synchronized.hpp
- explicit LockedType
- define all copy/move ctor and assignment
- update rlock/wlock/ulock to support arguments and return values
- Support additional template parameter for special case of synchronized instance which is the mapped type of a sychronized map
* Update lib/rocprofiler/external_correlation.cpp
- implement rocprofiler_{push,pop}_external_correlation_id
* Update lib/rocprofiler/CMakeLists.txt
- external_correlation.hpp
* Update lib/rocprofiler/rocprofiler.cpp
- status string for ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENT
- implement rocprofiler_get_thread_id
* Update lib/rocprofiler/tests (external correlation)
- add external_correlation unit tests
* Update include/rocprofiler/callback_tracing.h
- doxygen comments
- callback invoked in callback tracing has user_data pointer passed to it
* Update samples/api_callback_tracing/client.cpp
- add rocprofiler_user_data_t* to tool_tracing_callback
* Update lib/rocprofiler/tests/registration.cpp
- add rocprofiler_user_data_t* to tool_tracing_callback
* Update lib/rocprofiler/context/context.{hpp,cpp}
- update correlation_tracing_service
- external_correlation instance
- rename get_unique_record_id to get_unique_internal_id
* Update lib/tests/common/demangling.cpp
- tweak mangled definitions due to changing function get_unique_record_id to get_unique_internal_id
* Update lib/rocprofiler/hsa/hsa.cpp
- handle updates to external correlation id
- handle updates to callback signature in callback tracing
* Update CMakeLists.txt
- CMAKE_BUILD_TYPE=Coverage defines CODECOV=1
* Update samples/api_callback_tracing/client.cpp
[ROCm/rocprofiler-sdk commit: 6a3f79e626]
This commit is contained in:
1 orang tua
343f8679e7
melakukan
267954fdd3
24 files changed
+1106
-124
No files matched your search
@@ -61,7 +61,7 @@ get_client_index()
|
||||
} // namespace
|
||||
|
||||
uint64_t
|
||||
correlation_tracing_service::get_unique_record_id()
|
||||
correlation_tracing_service::get_unique_internal_id()
|
||||
{
|
||||
static auto _v = std::atomic<uint64_t>{};
|
||||
return _v++;
|
||||
@@ -181,7 +181,7 @@ start_context(rocprofiler_context_id_t context_id)
|
||||
// try to find a nullptr slot first
|
||||
for(size_t i = 0; i < get_active_contexts().size(); ++i)
|
||||
{
|
||||
auto* itr = get_active_contexts().at(i).load(std::memory_order_relaxed);
|
||||
const auto* itr = get_active_contexts().at(i).load(std::memory_order_relaxed);
|
||||
if(itr == nullptr)
|
||||
{
|
||||
idx = i;
|
||||
@@ -201,8 +201,8 @@ start_context(rocprofiler_context_id_t context_id)
|
||||
}
|
||||
|
||||
// atomic swap the pointer into the "active" array used internally
|
||||
context* _expected = nullptr;
|
||||
bool success = get_active_contexts().at(idx).compare_exchange_strong(
|
||||
const context* _expected = nullptr;
|
||||
bool success = get_active_contexts().at(idx).compare_exchange_strong(
|
||||
_expected, get_registered_contexts().at(context_id.handle).get());
|
||||
|
||||
if(!success) return ROCPROFILER_STATUS_ERROR_CONTEXT_NOT_STARTED;
|
||||
@@ -219,7 +219,7 @@ stop_context(rocprofiler_context_id_t idx)
|
||||
// callbacks
|
||||
for(auto& itr : get_active_contexts())
|
||||
{
|
||||
auto* _expected = itr.load(std::memory_order_relaxed);
|
||||
const auto* _expected = itr.load(std::memory_order_relaxed);
|
||||
if(_expected && _expected->context_idx == idx.handle)
|
||||
{
|
||||
bool success = itr.compare_exchange_strong(_expected, nullptr);
|
||||
@@ -237,7 +237,7 @@ deactivate_client_contexts(rocprofiler_client_id_t client_id)
|
||||
{
|
||||
for(auto& itr : get_active_contexts())
|
||||
{
|
||||
auto* itr_v = itr.load();
|
||||
const auto* itr_v = itr.load();
|
||||
if(itr_v->client_idx == client_id.handle)
|
||||
{
|
||||
itr.store(nullptr);
|
||||
|
||||
Reference in new issue
Block a user