diff --git a/source/lib/core/config.cpp b/source/lib/core/config.cpp index 1e4ff5b6..d3d13822 100644 --- a/source/lib/core/config.cpp +++ b/source/lib/core/config.cpp @@ -624,6 +624,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 7ce7bf14..bfa133b5 100644 --- a/source/lib/omnitrace/library/roctracer.cpp +++ b/source/lib/omnitrace/library/roctracer.cpp @@ -868,8 +868,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); @@ -896,6 +899,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);