From 82cbe3f30674e35d22db598fefe74f2482f0940e Mon Sep 17 00:00:00 2001 From: Tal Ben-Nun Date: Wed, 10 Jan 2024 05:17:32 -0800 Subject: [PATCH] Add option to skip barrier marker events in traces (#320) * Add option to skip barrier marker events in traces * Formatting * Apply review suggestions Co-authored-by: Jonathan R. Madsen * clang-format * Formatting --------- Co-authored-by: Jonathan R. Madsen Co-authored-by: Jonathan R. Madsen --- source/lib/core/config.cpp | 4 ++++ source/lib/omnitrace/library/roctracer.cpp | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/source/lib/core/config.cpp b/source/lib/core/config.cpp index a08c8a71..7cb3627a 100644 --- a/source/lib/core/config.cpp +++ b/source/lib/core/config.cpp @@ -629,6 +629,10 @@ configure_settings(bool _init) "HSA API type to collect", "", "roctracer", "rocm", "advanced"); + OMNITRACE_CONFIG_SETTING(bool, "OMNITRACE_ROCTRACER_DISCARD_BARRIERS", + "Skip barrier marker events in traces", false, "roctracer", + "rocm", "advanced"); + OMNITRACE_CONFIG_SETTING( std::string, "OMNITRACE_ROCM_EVENTS", "ROCm hardware counters. Use ':device=N' syntax to specify collection on device " diff --git a/source/lib/omnitrace/library/roctracer.cpp b/source/lib/omnitrace/library/roctracer.cpp index 8a463262..f4459c2b 100644 --- a/source/lib/omnitrace/library/roctracer.cpp +++ b/source/lib/omnitrace/library/roctracer.cpp @@ -928,8 +928,11 @@ hip_activity_callback(const char* begin, const char* end, void* arg) using Phase = critical_trace::Phase; if(!trait::runtime_enabled::get()) return; - static auto _kernel_names = std::unordered_map{}; - static auto _indexes = std::unordered_map{}; + static auto _kernel_names = std::unordered_map{}; + static auto _indexes = std::unordered_map{}; + static auto _skip_barrier_packets = + config::get_setting_value("OMNITRACE_ROCTRACER_DISCARD_BARRIERS") + .value_or(false); const roctracer_record_t* record = reinterpret_cast(begin); const roctracer_record_t* end_record = reinterpret_cast(end); @@ -956,6 +959,7 @@ hip_activity_callback(const char* begin, const char* end, void* arg) } if(record->domain != ACTIVITY_DOMAIN_HIP_OPS) continue; if(record->op > HIP_OP_ID_BARRIER) continue; + if(_skip_barrier_packets && record->op == HIP_OP_ID_BARRIER) continue; const char* op_name = roctracer_op_string(record->domain, record->op, record->kind);