Skip to content

fix(rocprofiler-sdk): report dispatch time on the caller's completion signal - #13919

Open
minseobshin11 wants to merge 3 commits into
developfrom
users/mishin/dispatch-time-wrapper
Open

minseobshin11 wants to merge 3 commits into
developfrom
users/mishin/dispatch-time-wrapper

Conversation

@minseobshin11

@minseobshin11 minseobshin11 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

When rocprofiler-sdk intercepts a queue, it moves the kernel onto its own completion signal and fires the application's signal with a trailing barrier. hsa_amd_profiling_get_dispatch_time() on the application's signal then returns the barrier's time (under 1 µs) instead of the kernel's, so tools such as libomptarget's OMPT report wrong kernel durations under the profiler.

This affects every queue-interception mode: rocprofv3 --runtime-trace, --sys-trace, --hip-trace, --pmc, thread trace, PC sampling, kernel replay, and ROCPROFILER_QUEUE_INTERPOSITION=0. Plain --kernel-trace uses inline interposition and is unaffected.

Technical Details

This uses the same approach as #13639 (async copy time) and needs no HSA runtime change. rocprofiler-sdk wraps hsa_amd_profiling_get_dispatch_time and hsa_signal_destroy:

sequenceDiagram
    participant App
    participant SDK as rocprofiler-sdk
    participant GPU
    App->>SDK: submit kernel with app signal
    SDK->>SDK: remember app signal to SDK signal
    SDK->>GPU: kernel on SDK signal, then barrier on app signal
    GPU-->>App: app signal reaches 0
    App->>SDK: get_dispatch_time on app signal
    SDK->>GPU: read time from SDK signal
    SDK-->>App: kernel start and end
Loading
  • At submit, the SDK records which of its signals stands in for the application's signal. The completion handler stores the time before the SDK signal goes back to the pool.
  • A query on a mapped signal returns that kernel's time. Any other signal goes to the HSA runtime unchanged.
  • The mapping is dropped when a later packet uses the signal (traced or not, including later packets in the same queue write) or the signal is destroyed, so a reused signal does not report a stale time.
  • The wrappers are installed when queue interception is enabled, inside the HSA API tracing layer, so --hsa-trace and --sys-trace still record these calls.
  • Not covered: multi-pass kernel replay, which fires the application's signal from a separate barrier after the last pass, and tools that attach after HSA is initialized. Both behave as they do today.

Issue Tracking

  • ROCM-26113

Test Plan

  • New execute test kernel-tracing-app-dispatch-time. It runs an HSA app under rocprofv3 --kernel-trace with ROCPROFILER_QUEUE_INTERPOSITION=0. The app checks the dispatch time on its own signal, then reuses the signal for a barrier, and for a kernel and a barrier in one queue write, and checks that the barriers do not report the kernel's time.
  • The reproducer from ROCM-26113 under five rocprofv3 modes.
  • Signal reuse after a collection window ends (-P 0:500:1, 200 dispatches).
  • Regression run of the kernel, counter, dispatch, replay, PC sampling, thread trace, SPM, HIP graph, OpenMP, memory copy and unit tests.

Test Result

MI300X (gfx942), ROCm 7.2.3:

Case Before After
No profiler (reference) ~277 µs ~277 µs
--runtime-trace, --sys-trace, --hip-trace, --pmc 440–600 ns ~277 µs
--kernel-trace ~277 µs ~277 µs
New test fails passes
Reuse after -P window — 200/200 correct, 0 stale
Regression (1181 tests) — no new failures vs base

Submission Checklist

@therock-pr-bot

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ⚠️ Warning Error: Source/code files changed without an accompanying unit test.
Expected: add at least one test file named like test_<name>.py / test_<name>.cpp (or <name>_test.*).
Current: code file(s) changed: projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/hsa.def.cpp, projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/queue.cpp, projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/queue.hpp, projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/queue_info_session.hpp, projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/registration.cpp (+1 more); no test file found
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Batched signal reuse can return stale timestamps, and mapped queries bypass requested HSA API tracing.

2 open issues
What changed in this PR

Corrects application-visible kernel dispatch timestamps when rocprofiler-sdk replaces completion signals during non-inline queue interception.

Changes:

  • Maps application signals to kernel timestamps and clears mappings on reuse or destruction.
  • Installs dispatch-time wrappers for non-inline interception.
  • Adds an integration test for dispatch timestamps and signal reuse.
File Description
projects/​rocprofiler-sdk/​tests/​kernel-tracing/​CMakeLists.txt Registers the integration test.
projects/​rocprofiler-sdk/​tests/​bin/​hsa-code-object/​hsa_dispatch_time_app.cpp Tests timestamps and barrier signal reuse.
projects/​rocprofiler-sdk/​tests/​bin/​hsa-code-object/​CMakeLists.txt Builds the test application.
projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​registration.cpp Installs wrappers conditionally.
projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​queue.hpp Declares wrapper initialization.
projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​queue.cpp Tracks, caches, and returns dispatch timestamps.
projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​queue_info_session.hpp Retains the application's completion signal.
projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​hsa.def.cpp Adds wrapper API metadata.

Review effort: Balanced

Comment thread projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/queue.cpp
Comment thread projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/registration.cpp Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage Report

Code Coverage Report

Unit Tests

Lines: 🔴 26.4% (📉 -3.69% vs base) — 8,686/32,954 across 321 files
Functions: 🔴 25.5% — 861/3,381

🔴 0-20% (169 files)
Lines Functions File
0.0% 0/106 0/9 source/bin/common/argument_registration.hpp
0.0% 0/267 0/28 source/bin/common/tool_runner.cpp
0.0% 0/992 0/48 source/bin/rocprof-sys-avail/avail.cpp
0.0% 0/60 0/6 source/bin/rocprof-sys-avail/avail.hpp
0.0% 0/223 0/24 source/bin/rocprof-sys-avail/common.cpp
0.0% 0/18 0/3 source/bin/rocprof-sys-avail/component_categories.hpp
0.0% 0/274 0/12 source/bin/rocprof-sys-avail/generate_config.cpp
0.0% 0/39 0/2 source/bin/rocprof-sys-avail/get_availability.hpp
0.0% 0/11 0/1 source/bin/rocprof-sys-avail/get_categories.hpp
0.0% 0/106 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/4 0/1 source/bin/rocprof-sys-avail/info_type.cpp
0.0% 0/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
0.0% 0/454 0/47 source/bin/rocprof-sys-causal/impl.cpp
0.0% 0/82 0/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
0.0% 0/706 0/45 source/bin/rocprof-sys-instrument/details.cpp
0.0% 0/106 0/7 source/bin/rocprof-sys-instrument/function_signature.cpp
0.0% 0/20 0/5 source/bin/rocprof-sys-instrument/function_signature.hpp
0.0% 0/160 0/7 source/bin/rocprof-sys-instrument/info.hpp
0.0% 0/277 0/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
0.0% 0/63 0/5 source/bin/rocprof-sys-instrument/log.cpp
0.0% 0/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
0.0% 0/547 0/41 source/bin/rocprof-sys-instrument/module_function.cpp
0.0% 0/93 0/7 source/bin/rocprof-sys-instrument/module_function.hpp
0.0% 0/1588 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/166 0/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
0.0% 0/2 0/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
0.0% 0/2 0/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
0.0% 0/57 0/5 source/bin/rocsys-exe/rocsys.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/20 0/3 source/lib/backends/posix/backend.hpp
0.0% 0/46 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
0.0% 0/16 0/4 source/lib/binary/address_multirange.cpp
0.0% 0/9 0/1 source/lib/binary/address_multirange.hpp
0.0% 0/126 0/5 source/lib/binary/analysis.cpp
0.0% 0/7 0/1 source/lib/binary/binary_info.hpp
0.0% 0/107 0/9 source/lib/binary/dwarf_entry.cpp
0.0% 0/1 0/1 source/lib/binary/dwarf_entry.hpp
0.0% 0/74 0/6 source/lib/binary/link_map.cpp
0.0% 0/3 0/1 source/lib/binary/link_map.hpp
0.0% 0/10 0/1 source/lib/binary/scope_filter.cpp
0.0% 0/6 0/2 source/lib/binary/scope_filter.hpp
0.0% 0/162 0/18 source/lib/binary/symbol.cpp
0.0% 0/8 0/8 source/lib/binary/symbol.hpp
0.0% 0/10 0/2 source/lib/common/env_vars.hpp
0.0% 0/40 0/3 source/lib/common/invoke.hpp
0.0% 0/22 0/2 source/lib/common/setup.hpp
0.0% 0/25 0/2 source/lib/core/amd_smi.cpp
0.0% 0/74 0/18 source/lib/core/binary/address_range.cpp
0.0% 0/9 0/3 source/lib/core/binary/address_range.hpp
0.0% 0/21 0/6 source/lib/core/categories.cpp
0.0% 0/11 0/11 source/lib/core/components/fwd.hpp
0.0% 0/29 0/3 source/lib/core/config.hpp
0.0% 0/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/242 0/29 source/lib/core/gpu.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/33 0/6 source/lib/core/mpi.hpp
0.0% 0/59 0/4 source/lib/core/mproc.cpp
0.0% 0/78 0/5 source/lib/core/perf.cpp
0.0% 0/52 0/5 source/lib/core/perfetto/cached_perfetto_session.cpp
0.0% 0/33 0/4 source/lib/core/perfetto/counter_track.hpp
0.0% 0/32 0/7 source/lib/core/perfetto/emitter.cpp
0.0% 0/48 0/8 source/lib/core/perfetto/emitter.hpp
0.0% 0/9 0/1 source/lib/core/perfetto/sinks/append_mode.hpp
0.0% 0/1 0/1 source/lib/core/progress/bar.hpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/53 0/3 source/lib/core/trace_cache/cache_manager.cpp
0.0% 0/7 0/2 source/lib/core/trace_cache/cache_manager.hpp
0.0% 0/817 0/104 source/lib/core/trace_cache/perfetto_processor.cpp
0.0% 0/1 0/1 source/lib/core/trace_cache/perfetto_processor.hpp
0.0% 0/129 0/13 source/lib/core/trace_cache/post_processor.cpp
0.0% 0/45 0/1 source/lib/core/trace_cache/sample_processor.hpp
0.0% 0/14 0/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
0.0% 0/543 0/85 source/lib/rocprof-sys-dl/dl.cpp
0.0% 0/16 0/1 source/lib/rocprof-sys-dl/main.c
0.0% 0/280 0/31 source/lib/rocprof-sys-rt/src/RTcommon.c
0.0% 0/29 0/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
0.0% 0/65 0/4 source/lib/rocprof-sys-rt/src/RTheap.c
0.0% 0/212 0/22 source/lib/rocprof-sys-rt/src/RTlinux.c
0.0% 0/97 0/8 source/lib/rocprof-sys-rt/src/RTposix.c
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/84 0/20 source/lib/rocprof-sys/api.cpp
0.0% 0/678 0/39 source/lib/rocprof-sys/library.cpp
0.0% 0/78 0/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
0.0% 0/8 0/1 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
0.0% 0/105 0/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
0.0% 0/37 0/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
0.0% 0/86 0/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
0.0% 0/23 0/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
0.0% 0/50 0/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
0.0% 0/564 0/33 source/lib/rocprof-sys/library/causal/data.cpp
0.0% 0/91 0/16 source/lib/rocprof-sys/library/causal/delay.cpp
0.0% 0/391 0/29 source/lib/rocprof-sys/library/causal/experiment.cpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/causal/experiment.hpp
0.0% 0/24 0/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
0.0% 0/296 0/25 source/lib/rocprof-sys/library/causal/sampling.cpp
0.0% 0/4 0/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
0.0% 0/5 0/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
0.0% 0/76 0/11 source/lib/rocprof-sys/library/components/backtrace.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/backtrace.hpp
0.0% 0/154 0/17 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
0.0% 0/11 0/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
0.0% 0/9 0/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
0.0% 0/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
0.0% 0/74 0/10 source/lib/rocprof-sys/library/components/callchain.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/callchain.hpp
0.0% 0/321 0/29 source/lib/rocprof-sys/library/components/comm_data.cpp
0.0% 0/19 0/5 source/lib/rocprof-sys/library/components/comm_data.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
0.0% 0/29 0/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/69 0/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
0.0% 0/13 0/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/176 0/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
0.0% 0/533 0/12 source/lib/rocprof-sys/library/components/mpip.hpp
0.0% 0/79 0/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
0.0% 0/350 0/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
0.0% 0/35 0/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
0.0% 0/24 0/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
0.0% 0/165 0/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
0.0% 0/147 0/10 source/lib/rocprof-sys/library/coverage.cpp
0.0% 0/29 0/5 source/lib/rocprof-sys/library/coverage.hpp
0.0% 0/66 0/16 source/lib/rocprof-sys/library/coverage/impl.hpp
0.0% 0/260 0/35 source/lib/rocprof-sys/library/kokkosp.cpp
0.0% 0/252 0/32 source/lib/rocprof-sys/library/perf.cpp
0.0% 0/11 0/3 source/lib/rocprof-sys/library/perf.hpp
0.0% 0/155 0/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
0.0% 0/69 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
0.0% 0/36 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/14 0/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
0.0% 0/167 0/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/125 0/11 source/lib/rocprof-sys/library/process_sampler.cpp
0.0% 0/15 0/3 source/lib/rocprof-sys/library/process_sampler.hpp
0.0% 0/586 0/43 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
0.0% 0/102 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/53 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/8 0/3 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/122 0/20 source/lib/rocprof-sys/library/runtime.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
0.0% 0/800 0/49 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/148 0/31 source/lib/rocprof-sys/library/thread_data.hpp
0.0% 0/10 0/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
0.0% 0/11 0/1 source/lib/rocprof-sys/library/thread_deleter.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/thread_deleter.hpp
0.0% 0/168 0/27 source/lib/rocprof-sys/library/thread_info.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
0.0% 0/118 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/60 0/14 source/lib/rocprof-sys/library/tracing.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/progress.cpp
0.0% 0/74 0/16 source/lib/rocprof-sys/regions.cpp
0.0% 0/91 0/6 source/lib/rocprof-sys/timeout.cpp
0.0% 0/453 0/45 source/python/libpyrocprofsys.cpp
0.8% 7/838 1/70 source/lib/core/argparse.cpp
3.7% 66/1798 10/301 source/lib/core/config.cpp
18.8% 6/32 2/5 source/bin/common/common_utils.hpp
🟠 20-50% (6 files)
Lines Functions File
20.0% 1/5 0/2 source/lib/core/argparse.hpp
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
22.2% 101/454 29/66 source/lib/core/trace_cache/metadata_registry.cpp
31.2% 20/64 4/9 source/lib/core/utility.hpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
🟡 50-80% (26 files)
Lines Functions File
50.0% 19/38 4/5 source/lib/common/static_object.hpp
50.0% 8/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.2% 210/418 23/35 source/bin/common/common_utils.cpp
52.4% 130/248 14/29 source/lib/rocprof-sys/library/components/category_region.hpp
56.7% 17/30 2/15 source/lib/core/trace_cache/unified_memory_processor.hpp
60.0% 36/60 7/12 source/lib/core/agent_manager.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
61.7% 348/564 26/40 source/bin/common/json_config.cpp
63.1% 53/84 4/5 source/lib/core/trace_cache/discovery.cpp
66.7% 2/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
68.7% 46/67 11/14 source/lib/core/trace_cache/data_types.cpp
70.0% 236/337 15/17 source/bin/common/preset_registry.cpp
71.4% 30/42 3/3 source/lib/core/perfetto/sinks/file_output.cpp
71.4% 25/35 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
72.1% 88/122 15/18 source/lib/core/perfetto/engine.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
74.3% 78/105 9/10 source/lib/core/perfetto/engine_impl.hpp
74.5% 41/55 4/7 source/lib/core/config/trace_period_config.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.4% 46/61 6/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
75.8% 47/62 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.6% 77/98 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
🟢 80-100% (120 files)
Lines Functions File
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.6% 133/165 10/14 source/lib/backends/procfs/backend.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.2% 13/16 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
81.4% 700/860 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
81.8% 36/44 3/6 source/lib/core/containers/static_vector.hpp
83.2% 129/155 17/19 source/lib/common/path.hpp
83.9% 73/87 10/12 source/lib/logger/logger.hpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
85.1% 40/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
85.2% 23/27 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
85.2% 213/250 20/33 source/lib/core/sdk/tracing-config.hpp
85.7% 24/28 4/7 source/lib/core/trace_cache/metadata_registry.hpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.6% 259/299 27/33 source/lib/common/environment.hpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.1% 106/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.hpp
89.5% 51/57 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.4% 178/197 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
90.5% 248/274 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.5% 43/47 7/7 source/lib/core/control/triggers/time_window.hpp
91.5% 43/47 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 24/26 1/3 source/lib/core/containers/c_array.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.hpp
92.5% 186/201 21/23 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.9% 13/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
93.1% 54/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
93.3% 265/284 21/30 source/lib/core/trace_cache/sample_type.hpp
94.1% 16/17 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
94.4% 51/54 4/7 source/lib/core/containers/aligned_static_vector.hpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.2% 20/21 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.hpp
95.4% 83/87 19/23 source/lib/core/containers/stable_vector.hpp
95.5% 105/110 12/13 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/ompt.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
96.1% 49/51 7/7 source/lib/core/process_environment_info.cpp
96.2% 126/131 10/10 source/lib/core/output/output_summary.cpp
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.5% 82/85 11/12 source/lib/core/state.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.3% 36/37 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
97.3% 36/37 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 44/45 7/11 source/lib/core/demangler.hpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 7/8 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/decoder.hpp
98.5% 129/131 18/19 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/core_api.hpp
98.5% 67/68 9/9 source/bin/common/cli_dispatcher.cpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.6% 68/69 5/5 source/bin/rocprof-sys-instrument/dynamic_dependency_listing.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 1/1 0/1 source/bin/common/cli_dispatcher.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 110/110 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 32/32 2/3 source/lib/backends/hipfile/backend.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 2/5 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/3 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 158/158 1/1 source/lib/core/agent_info.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 19/19 4/4 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 1/2 source/lib/core/control/clocks/steady.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 3/3 1/2 source/lib/core/output/output_summary.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 7/7 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 12/12 1/1 source/lib/logger/logger.cpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 3/3 0/3 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 39/39 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
100.0% 9/9 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 10/10 0/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/control_api.hpp

Distribution

Range Files
0-20% 169
20-50% 6
50-80% 26
80-100% 120

Unit Tests (PR Diff Files Only)

Lines: 🔴 0.3% — 7/2,593 across 3 files
Functions: 🔴 0.6% — 1/177

🔴 0-20% (3 files)
Lines Functions File
0.0% 0/1588 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/167 0/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.8% 7/838 (📈 +0.01%) 1/70 source/lib/core/argparse.cpp

Distribution

Range Files
0-20% 3
20-50% 0
50-80% 0
80-100% 0

E2E Tests

Lines: 🟡 72.7% — 23,962/32,954 across 321 files
Functions: 🟡 70.7% — 2,390/3,381

🔴 0-20% (30 files)
Lines Functions File
0.0% 0/106 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
0.0% 0/102 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/53 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/8 0/3 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/453 0/45 source/python/libpyrocprofsys.cpp
4.8% 8/165 2/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
8.5% 50/586 13/43 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
8.7% 4/46 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
12.0% 3/25 1/2 source/lib/core/amd_smi.cpp
13.2% 32/242 6/29 source/lib/core/gpu.cpp
13.6% 38/280 7/31 source/lib/rocprof-sys-rt/src/RTcommon.c
13.8% 4/29 1/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
14.2% 30/212 4/22 source/lib/rocprof-sys-rt/src/RTlinux.c
16.2% 12/74 4/16 source/lib/rocprof-sys/regions.cpp
🟠 20-50% (19 files)
Lines Functions File
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
21.3% 33/155 4/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
23.8% 108/454 31/66 source/lib/core/trace_cache/metadata_registry.cpp
24.4% 19/78 3/5 source/lib/core/perf.cpp
27.8% 27/97 4/8 source/lib/rocprof-sys-rt/src/RTposix.c
30.5% 249/817 32/104 source/lib/core/trace_cache/perfetto_processor.cpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
34.5% 10/29 3/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
35.7% 30/84 10/20 source/lib/rocprof-sys/api.cpp
37.1% 39/105 5/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
37.8% 31/82 1/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
38.5% 5/13 2/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
43.8% 21/48 6/8 source/lib/core/perfetto/emitter.hpp
44.4% 4/9 1/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
45.0% 72/160 3/7 source/bin/rocprof-sys-instrument/info.hpp
45.5% 30/66 6/16 source/lib/rocprof-sys/library/coverage/impl.hpp
46.2% 42/91 2/6 source/lib/rocprof-sys/timeout.cpp
47.7% 31/65 3/4 source/lib/rocprof-sys-rt/src/RTheap.c
🟡 50-80% (59 files)
Lines Functions File
50.0% 8/16 2/4 source/lib/binary/address_multirange.cpp
50.0% 16/32 5/7 source/lib/core/perfetto/emitter.cpp
50.0% 7/14 2/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
50.0% 4/8 1/2 source/lib/rocprof-sys/progress.cpp
50.9% 29/57 3/5 source/bin/rocsys-exe/rocsys.cpp
52.3% 168/321 15/29 source/lib/rocprof-sys/library/components/comm_data.cpp
54.6% 142/260 27/35 source/lib/rocprof-sys/library/kokkosp.cpp
55.6% 25/45 0/1 source/lib/core/trace_cache/sample_processor.hpp
56.7% 17/30 2/15 source/lib/core/trace_cache/unified_memory_processor.hpp
57.0% 45/79 8/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
57.5% 23/40 1/3 source/lib/common/invoke.hpp
58.1% 97/167 15/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
59.4% 63/106 5/9 source/bin/common/argument_registration.hpp
59.5% 44/74 13/18 source/lib/core/binary/address_range.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
62.7% 37/59 3/4 source/lib/core/mproc.cpp
63.8% 44/69 5/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
63.9% 161/252 24/32 source/lib/rocprof-sys/library/perf.cpp
64.3% 54/84 4/5 source/lib/core/trace_cache/discovery.cpp
65.0% 13/20 2/3 source/lib/backends/posix/backend.hpp
66.3% 468/706 33/45 source/bin/rocprof-sys-instrument/details.cpp
66.4% 81/122 15/20 source/lib/rocprof-sys/library/runtime.cpp
66.7% 6/9 1/1 source/lib/core/perfetto/sinks/append_mode.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
67.6% 25/37 5/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
69.1% 375/543 40/85 source/lib/rocprof-sys-dl/dl.cpp
70.0% 35/50 5/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
70.5% 124/176 16/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
71.4% 30/42 3/3 source/lib/core/perfetto/sinks/file_output.cpp
71.4% 25/35 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
72.2% 407/564 30/40 source/bin/common/json_config.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
72.7% 245/337 16/17 source/bin/common/preset_registry.cpp
73.0% 54/74 5/6 source/lib/binary/link_map.cpp
73.6% 78/106 5/7 source/bin/rocprof-sys-instrument/function_signature.cpp
74.6% 47/63 4/5 source/bin/rocprof-sys-instrument/log.cpp
74.6% 312/418 33/35 source/bin/common/common_utils.cpp
74.6% 421/564 30/33 source/lib/rocprof-sys/library/causal/data.cpp
74.8% 1188/1588 51/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
75.0% 15/20 5/5 source/bin/rocprof-sys-instrument/function_signature.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.0% 18/24 4/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
75.3% 223/296 23/25 source/lib/rocprof-sys/library/causal/sampling.cpp
75.7% 414/547 40/41 source/bin/rocprof-sys-instrument/module_function.cpp
75.8% 47/62 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
76.3% 29/38 5/5 source/lib/common/static_object.hpp
76.7% 46/60 10/12 source/lib/core/agent_manager.cpp
76.7% 99/129 12/13 source/lib/core/trace_cache/post_processor.cpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.3% 209/267 24/28 source/bin/common/tool_runner.cpp
78.4% 116/148 26/31 source/lib/rocprof-sys/library/thread_data.hpp
79.0% 83/105 10/10 source/lib/core/perfetto/engine_impl.hpp
79.1% 219/277 20/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
79.8% 134/168 24/27 source/lib/rocprof-sys/library/thread_info.cpp
🟢 80-100% (213 files)
Lines Functions File
80.0% 4/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.7% 134/166 12/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.2% 181/223 21/24 source/bin/rocprof-sys-avail/common.cpp
81.2% 13/16 1/1 source/lib/rocprof-sys-dl/main.c
81.2% 13/16 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
81.3% 1461/1798 276/301 source/lib/core/config.cpp
81.4% 70/86 17/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
82.7% 43/52 5/5 source/lib/core/perfetto/cached_perfetto_session.cpp
83.2% 89/107 8/9 source/lib/binary/dwarf_entry.cpp
83.6% 327/391 18/29 source/lib/rocprof-sys/library/causal/experiment.cpp
84.0% 722/860 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
84.1% 570/678 34/39 source/lib/rocprof-sys/library.cpp
84.2% 16/19 3/5 source/lib/rocprof-sys/library/components/comm_data.hpp
84.2% 139/165 11/14 source/lib/backends/procfs/backend.hpp
84.6% 137/162 17/18 source/lib/binary/symbol.cpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
84.7% 83/98 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
85.1% 74/87 10/12 source/lib/logger/logger.hpp
85.2% 23/27 2/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
85.7% 24/28 4/7 source/lib/core/trace_cache/metadata_registry.hpp
85.7% 78/91 14/16 source/lib/rocprof-sys/library/causal/delay.cpp
85.7% 132/154 12/17 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.0% 80/93 5/7 source/bin/rocprof-sys-instrument/module_function.hpp
86.8% 46/53 3/3 source/lib/core/trace_cache/cache_manager.cpp
87.5% 14/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
87.6% 262/299 29/33 source/lib/common/environment.hpp
87.8% 129/147 10/10 source/lib/rocprof-sys/library/coverage.cpp
88.1% 104/118 10/11 source/lib/rocprof-sys/library/tracing.cpp
88.2% 67/76 9/11 source/lib/rocprof-sys/library/components/backtrace.cpp
88.8% 403/454 36/47 source/bin/rocprof-sys-causal/impl.cpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.0% 712/800 46/49 source/lib/rocprof-sys/library/sampling.cpp
89.2% 66/74 7/10 source/lib/rocprof-sys/library/components/callchain.cpp
89.2% 223/250 23/33 source/lib/core/sdk/tracing-config.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.hpp
89.4% 749/838 57/70 source/lib/core/argparse.cpp
90.0% 9/10 1/1 source/lib/binary/scope_filter.cpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.0% 54/60 10/14 source/lib/rocprof-sys/library/tracing.hpp
90.1% 247/274 11/12 source/bin/rocprof-sys-avail/generate_config.cpp
90.5% 248/274 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 318/350 18/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
90.9% 20/22 2/2 source/lib/common/setup.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
90.9% 10/11 1/1 source/lib/rocprof-sys/library/thread_deleter.cpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.2% 52/57 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
91.5% 43/47 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
91.6% 109/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
92.1% 116/126 5/5 source/lib/binary/analysis.cpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.hpp
92.5% 186/201 21/23 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.6% 113/122 17/18 source/lib/core/perfetto/engine.cpp
92.6% 919/992 41/48 source/bin/rocprof-sys-avail/avail.cpp
92.9% 13/14 2/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
93.1% 27/29 3/5 source/lib/rocprof-sys/library/coverage.hpp
93.3% 265/284 21/30 source/lib/core/trace_cache/sample_type.hpp
93.6% 73/78 6/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
93.6% 117/125 11/11 source/lib/rocprof-sys/library/process_sampler.cpp
93.9% 31/33 6/6 source/lib/core/mpi.hpp
94.1% 16/17 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
94.3% 33/35 7/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
94.4% 186/197 16/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
94.4% 17/18 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.8% 147/155 18/19 source/lib/common/path.hpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.1% 58/61 7/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
95.2% 20/21 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.hpp
95.5% 105/110 12/13 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/ompt.hpp
95.7% 45/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
96.1% 49/51 7/7 source/lib/core/process_environment_info.cpp
96.2% 126/131 10/10 source/lib/core/output/output_summary.cpp
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.3% 52/54 5/7 source/lib/core/containers/aligned_static_vector.hpp
96.6% 28/29 3/3 source/lib/core/config.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 240/248 28/29 source/lib/rocprof-sys/library/components/category_region.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
96.9% 62/64 9/9 source/lib/core/utility.hpp
97.0% 32/33 4/4 source/lib/core/perfetto/counter_track.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.0% 65/67 14/14 source/lib/core/trace_cache/data_types.cpp
97.2% 35/36 4/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
97.3% 36/37 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
97.3% 36/37 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 7/8 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/ompt/decoder.hpp
98.3% 57/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
98.5% 129/131 18/19 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/core_api.hpp
98.5% 67/68 9/9 source/bin/common/cli_dispatcher.cpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.6% 68/69 5/5 source/bin/rocprof-sys-instrument/dynamic_dependency_listing.hpp
98.6% 68/69 5/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 1/1 0/1 source/bin/common/cli_dispatcher.hpp
100.0% 32/32 4/5 source/bin/common/common_utils.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 60/60 6/6 source/bin/rocprof-sys-avail/avail.hpp
100.0% 39/39 2/2 source/bin/rocprof-sys-avail/get_availability.hpp
100.0% 11/11 1/1 source/bin/rocprof-sys-avail/get_categories.hpp
100.0% 4/4 1/1 source/bin/rocprof-sys-avail/info_type.cpp
100.0% 9/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
100.0% 2/2 1/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
100.0% 2/2 1/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
100.0% 110/110 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 32/32 2/3 source/lib/backends/hipfile/backend.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 9/9 0/1 source/lib/binary/address_multirange.hpp
100.0% 7/7 1/1 source/lib/binary/binary_info.hpp
100.0% 1/1 0/1 source/lib/binary/dwarf_entry.hpp
100.0% 3/3 0/1 source/lib/binary/link_map.hpp
100.0% 6/6 1/2 source/lib/binary/scope_filter.hpp
100.0% 8/8 7/8 source/lib/binary/symbol.hpp
100.0% 10/10 2/2 source/lib/common/env_vars.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 3/5 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/3 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 158/158 1/1 source/lib/core/agent_info.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 5/5 0/2 source/lib/core/argparse.hpp
100.0% 9/9 1/3 source/lib/core/binary/address_range.hpp
100.0% 21/21 6/6 source/lib/core/categories.cpp
100.0% 11/11 11/11 source/lib/core/components/fwd.hpp
100.0% 55/55 6/7 source/lib/core/config/trace_period_config.hpp
100.0% 26/26 1/3 source/lib/core/containers/c_array.hpp
100.0% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 87/87 20/23 source/lib/core/containers/stable_vector.hpp
100.0% 44/44 3/6 source/lib/core/containers/static_vector.hpp
100.0% 19/19 4/4 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 2/2 source/lib/core/control/clocks/steady.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 47/47 7/7 source/lib/core/control/triggers/time_window.hpp
100.0% 45/45 7/11 source/lib/core/demangler.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 3/3 1/2 source/lib/core/output/output_summary.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 1/1 0/1 source/lib/core/progress/bar.hpp
100.0% 7/7 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 85/85 11/12 source/lib/core/state.hpp
100.0% 7/7 1/2 source/lib/core/trace_cache/cache_manager.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 1/1 1/1 source/lib/core/trace_cache/perfetto_processor.hpp
100.0% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 12/12 1/1 source/lib/logger/logger.cpp
100.0% 8/8 0/1 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
100.0% 23/23 2/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
100.0% 3/3 0/1 source/lib/rocprof-sys/library/causal/experiment.hpp
100.0% 4/4 1/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
100.0% 5/5 2/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/backtrace.hpp
100.0% 11/11 1/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
100.0% 4/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/callchain.hpp
100.0% 8/8 2/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
100.0% 533/533 12/12 source/lib/rocprof-sys/library/components/mpip.hpp
100.0% 5/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
100.0% 24/24 1/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
100.0% 11/11 0/3 source/lib/rocprof-sys/library/perf.hpp
100.0% 14/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
100.0% 3/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 3/3 0/3 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 15/15 2/3 source/lib/rocprof-sys/library/process_sampler.hpp
100.0% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 39/39 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
100.0% 9/9 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 10/10 0/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/roctx/control_api.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
100.0% 10/10 3/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
100.0% 5/5 1/1 source/lib/rocprof-sys/library/thread_deleter.hpp

Distribution

Range Files
0-20% 30
20-50% 19
50-80% 59
80-100% 213

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Cache invalidation after finalization, hinted signal handles, and agent validation still need correction.

1 open issue
2 previously missed issues

In code that hasn't changed since last review

Medium severity Normalize hinted signal handles for cache tracking and invalidation

projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​queue.cpp:156

On agents that support signal hints, a packet can legally carry a hinted completion handle, but queries and destruction must use the plain handle (projects/rocr-runtime/runtime/hsa-runtime/inc/hsa_ext_amd.h:2239–2247). Keying this map by the hinted value makes the application's query miss the entry and still return the barrier time. Plain-handle destruction or reuse also fails to remove it. Normalize application signal handles consistently for tracking, completion storage, lookup and invalidation, with a compatibility guard for older headers.

Medium severity Validate query agent before returning mapped cache results

projects/​rocprofiler-sdk/​source/​lib/​rocprofiler-sdk/​hsa/​queue.cpp:196

The mapped path ignores the caller's _agent. A query with a CPU agent can therefore return cached success instead of HSA_STATUS_ERROR_INVALID_AGENT, which the runtime returns for non-GPU agents. Use the mapped entry only when the supplied agent matches its recorded agent; otherwise fall through to the runtime's validation.

2 resolved since last review

Review effort: Balanced

Comment thread projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/hsa/queue.cpp

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation organization: ROCm project: rocprofiler-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants