Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
cbddf6f
refactor(rocprofiler-sdk): migrate counter collection off the per-que…
amd-vkale Jul 20, 2026
e0b0782
fix(rocprofiler-sdk): route counter completions after stop_context
cursoragent Jul 30, 2026
8b6a4d0
fix(rocprofiler-sdk): do not drain the GPU in counters::stop_context
cursoragent Jul 30, 2026
e5d8ebe
refactor(rocprofiler-sdk): address review feedback on #8891
cursoragent Jul 31, 2026
64c01a8
test(rocprofiler-sdk): assert in-flight dispatches are delivered, not…
cursoragent Jul 31, 2026
7d9823a
docs(rocprofiler-sdk): record the client-id overlap with the registry…
cursoragent Jul 31, 2026
8129859
fix(rocprofiler-sdk): drain in-flight dispatches in counters::stop_co…
cursoragent Jul 31, 2026
794008d
fix(rocprofiler-sdk): correct the exit-hook comment about the stop-pa…
cursoragent Aug 1, 2026
b618a75
docs(rocprofiler-sdk): add queue callback removal architecture doc
cursoragent Aug 1, 2026
9e97d32
fix(rocprofiler-sdk): build the queue-hooks test's correlation_id via…
cursoragent Aug 5, 2026
2063ba6
fix(rocprofiler-sdk): finalize client contexts before tearing down qu…
amd-vkale Aug 6, 2026
5752c5f
fix(rocprofiler-sdk): restore the original finalize() teardown order
amd-vkale Aug 6, 2026
9681ed7
ci: re-run to confirm mi325 test failures are flake
cursoragent Aug 11, 2026
5d894e3
feat(rocprofiler-sdk): scope dispatch counter collection to agents
amd-vkale Aug 7, 2026
8698fae
style(rocprofiler-sdk): reformat with the versions CI pins
amd-vkale Aug 7, 2026
0b2c074
test(rocprofiler-sdk): cover per-agent scoping on real multi-GPU hard…
amd-vkale Aug 7, 2026
2ae929b
Apply suggestions from code review
jrmadsen Aug 11, 2026
da8c2cd
refactor(rocprofiler-sdk): retype agent scoping cascades, move inters…
amd-vkale Aug 11, 2026
fbe364e
fix(rocprofiler-sdk): repair #9868 CI compile and clang-format failures
amd-vkale Aug 10, 2026
4bfedef
fix: hold refcount lock through serializer transitions to eliminate r…
Copilot Aug 18, 2026
106307d
fix: address all reviewer comments (header docs, test races, callback…
Copilot Aug 18, 2026
70bef64
fix(rocprofiler-sdk): define get_contexts_mutex once, matching the he…
amd-vkale Aug 18, 2026
454b141
perf(rocprofiler-sdk): counters exit-hook fast path and gate caching
cursoragent Aug 19, 2026
50a1d31
test(rocprofiler-sdk): add queue-hooks dispatch perf regression tests
amd-vkale Aug 25, 2026
1e7c0ce
refactor(rocprofiler-sdk): extract the replay window primitives from …
cursoragent Aug 20, 2026
b56c7e9
feat(rocprofiler-sdk): add range replay (experimental)
cursoragent Aug 20, 2026
95c4a3b
feat(rocprofiler-sdk): record range dispatches and detect interferenc…
cursoragent Aug 20, 2026
42a4d71
docs(rocprofiler-sdk): document range replay
cursoragent Aug 20, 2026
05794fc
fix(rocprofiler-sdk): deliver range replay CLOSE to the contexts that…
cursoragent Aug 20, 2026
b51199e
docs(rocprofiler-sdk): record the multi-GPU gap in the range replay API
cursoragent Aug 20, 2026
54b2b34
fix(rocprofiler-sdk): wire range replay local context toggles to kern…
amd-vkale Aug 28, 2026
0390942
fix(rocprofiler-sdk): guard the range replay foreign-dispatch agent l…
cursoragent Sep 9, 2026
269972a
fix(rocprofiler-sdk): count the dispatch that overruns the range budget
cursoragent Sep 9, 2026
c202120
test(rocprofiler-sdk): pin the public range replay record layout
cursoragent Sep 9, 2026
4834487
fix(rocprofiler-sdk): claim the range replay service atomically
cursoragent Sep 9, 2026
d4b3ee8
test(rocprofiler-sdk): cover the range replay configuration path
cursoragent Sep 9, 2026
40224ed
test(rocprofiler-sdk): cover the range replay pass loop and callback …
cursoragent Sep 9, 2026
abf97d9
style(rocprofiler-sdk): format the range replay test sources
cursoragent Sep 9, 2026
07e595c
test(rocprofiler-sdk): cover the range replay executor's device-free …
cursoragent Sep 9, 2026
cd8399f
feat(rocprofiler-sdk): add the range replay samples
cursoragent Sep 9, 2026
ac36601
test(rocprofiler-sdk): pin the hardware queue pool for the decline sa…
cursoragent Sep 9, 2026
addcf00
fix(rocprofiler-sdk): step a byte pointer into the replay ring
cursoragent Sep 9, 2026
40ea3c4
fix(rocprofiler-sdk): correct the range replay samples' expected result
cursoragent Sep 9, 2026
bf8c0d7
test(rocprofiler-sdk): add the range replay perf regression harness
cursoragent Sep 10, 2026
555c4de
docs(rocprofiler-sdk): document the range replay cost model
cursoragent Sep 10, 2026
608ff56
fix(rocprofiler-sdk): reject the kernel replay beta acknowledgement o…
cursoragent Sep 10, 2026
f3d750f
test(rocprofiler-sdk): add queue-hooks dispatch perf regression tests
amd-vkale Aug 25, 2026
52667bf
fix(rocprofiler-sdk): move queue hook tags off the callback registry …
cursoragent Sep 18, 2026
38792f3
style(rocprofiler-sdk): align serializer transition application with …
cursoragent Sep 18, 2026
d831c58
style(rocprofiler-sdk): apply clang-format to the counters queue hook…
cursoragent Sep 19, 2026
a783e25
fix(rocprofiler-sdk): make the counters queue hooks test compile
cursoragent Sep 19, 2026
ebf8cd7
fix(rocprofiler-sdk): construct valid test fixtures in the counters e…
cursoragent Sep 19, 2026
7223905
fix(rocprofiler-sdk): keep the queue-hooks-perf scripts importable on…
cursoragent Sep 20, 2026
91f368b
fix(rocprofiler-sdk): drop Python 3.7-only subprocess kwargs from the…
cursoragent Sep 20, 2026
45d2adb
ci(rocprofiler-sdk): repair code coverage and ROCm release compatibil…
cursoragent Sep 21, 2026
66a87c0
ci(rocprofiler-sdk): keep ATT quick scan disabled in release compatib…
cursoragent Sep 21, 2026
e26e4de
fix(rocprofiler-sdk): keep HIP ordinals aligned with agents in per-ag…
cursoragent Sep 21, 2026
a5bc57c
fix(rocprofiler-sdk): close the two context-lifecycle races in stop_c…
cursoragent Sep 21, 2026
67f130c
fix(rocprofiler-sdk): read contexts through a snapshot in the counter…
cursoragent Sep 21, 2026
c1eccc2
ci(rocprofiler-sdk): repair the docs-from-source build
cursoragent Sep 21, 2026
67a7b93
fix(rocprofiler-sdk): keep a context alive across the unlocked stop p…
cursoragent Sep 21, 2026
fb9b88b
fix(rocprofiler-sdk): make set_dispatch_agents wait out a context stop
cursoragent Sep 21, 2026
d007ad4
fix(rocprofiler-sdk): tie the context snapshot's lifetime to the regi…
cursoragent Sep 21, 2026
10b7d5e
chore: drop personal editor rules file from the branch
cursoragent Sep 21, 2026
a011603
docs(rocprofiler-sdk): correct the lost-exchange comment in stop_context
cursoragent Sep 21, 2026
4c03247
fix(rocprofiler-sdk): guard the device-counting signal teardown again…
cursoragent Sep 21, 2026
3eb8543
Merge remote-tracking branch 'upstream/develop' into users/vkale/remo…
amd-vkale Sep 21, 2026
fa5ed50
Merge remote-tracking branch 'upstream/develop' into cursor/resolve-u…
amd-vkale Sep 21, 2026
0dcc3d6
Merge remote-tracking branch 'upstream/users/vkale/remove-callbacks-c…
amd-vkale Sep 21, 2026
bd443e8
Merge stacked counter fixes into users/vkale/remove-callbacks-counters
amd-vkale Sep 21, 2026
51d47cf
Improve context mutex handling and error checks
amd-vkale Sep 21, 2026
9c81204
Clarify client ID handling in queue callback removal
amd-vkale Sep 21, 2026
791c729
Update skip condition for integration tests
amd-vkale Sep 21, 2026
5869be4
Guard serializer teardown by ownership
Copilot Sep 21, 2026
6068954
style(rocprofiler-sdk): restore clang-format compliance in counters a…
cursoragent Sep 21, 2026
c36b7fb
fix(rocprofiler-sdk): restore the closing paren on the per-agent skip…
cursoragent Sep 22, 2026
bb1d20b
style(rocprofiler-sdk): wrap the per-agent skip regex for cmake-format
cursoragent Sep 22, 2026
de2ff9a
fix(rocprofiler-sdk): resolve context ids off the snapshot, not the l…
cursoragent Sep 22, 2026
c87e51e
fix(rocprofiler-sdk): retire deregistered contexts instead of destroy…
cursoragent Sep 22, 2026
59a5b28
test(rocprofiler-sdk): temporarily log internal teardown on one anyti…
cursoragent Sep 22, 2026
d2d9a11
test(rocprofiler-sdk): capture a fault backtrace on the anytime tests
cursoragent Sep 22, 2026
78d6079
fix(rocprofiler-sdk): give the stopping-context state a controlled li…
cursoragent Sep 22, 2026
6d237a5
refactor(rocprofiler-sdk): migrate thread trace off the per-queue cal…
amd-vkale Sep 22, 2026
168c757
fix(rocprofiler-sdk): read the context registry off a published snapshot
amd-vkale Sep 22, 2026
9b5f8b6
refactor(rocprofiler-sdk): migrate SPM off the per-queue callback reg…
amd-vkale Sep 22, 2026
13cb605
fix(rocprofiler-sdk): read the context registry off a published snapshot
amd-vkale Sep 22, 2026
ad2ced0
refactor(rocprofiler-sdk): migrate PC sampling off the per-queue call…
amd-vkale Sep 22, 2026
272836d
ci(rocprofiler-sdk): restore develop's release compatibility workflow
Sep 22, 2026
91089a0
fix(rocprofiler-sdk): guard rocprofiler_spm_destroy_counter_config on…
cursoragent Sep 22, 2026
4bbc5a8
perf(rocprofiler-sdk): scope the SPM write-interceptor gate to the qu…
cursoragent Sep 22, 2026
4a50bbf
chore(rocprofiler-sdk): re-run CI to test late-start-tracing segfault…
cursoragent Sep 23, 2026
6a14614
refactor(rocprofiler-sdk): rename the thread trace queue hooks to the…
cursoragent Sep 23, 2026
47a0139
refactor(rocprofiler-sdk): rename the SPM queue hooks to the agreed p…
cursoragent Sep 23, 2026
4fb65ff
refactor(rocprofiler-sdk): rename the PC sampling queue hooks to the …
cursoragent Sep 23, 2026
f71eed2
style(rocprofiler-sdk): apply cmake-format to the pc_sampling queue_h…
cursoragent Sep 23, 2026
b575be6
Revert temporary anytime-test fault instrumentation
cursoragent Sep 23, 2026
1f0487a
chore: drop agent config file that leaked into a source commit
cursoragent Sep 23, 2026
c2d5c17
test(rocprofiler-sdk): make the per-agent scoping failure diagnosable
cursoragent Sep 23, 2026
e2dd215
test(rocprofiler-sdk): stop the per-agent scoping test from initializ…
cursoragent Sep 23, 2026
87c4313
perf(rocprofiler-sdk): scope the counters interception gate to the di…
cursoragent Sep 23, 2026
3ff1822
perf(rocprofiler-sdk): scope the thread trace interception gate to th…
cursoragent Sep 23, 2026
79a456a
fix(rocprofiler-sdk): serialize the counters callback-thread refcount…
cursoragent Sep 24, 2026
71c8e59
ci(rocprofiler-sdk): drop the stray CMake pin from release compatibility
cursoragent Sep 24, 2026
26b8aab
ci(rocprofiler-sdk): drop the stray CMake pin from release compatibility
cursoragent Sep 24, 2026
a308ba3
fix(rocprofiler-sdk): take the contexts mutex in spm::set_dispatch_ag…
cursoragent Sep 24, 2026
0ced83c
test(rocprofiler-sdk): report per-agent thread trace skips as skipped…
cursoragent Sep 24, 2026
382bc9b
test(rocprofiler-sdk): use the repo's standard gtest skip regex
cursoragent Sep 24, 2026
28f6d20
fix(rocprofiler-sdk): give the counters callback-thread mutex its own…
cursoragent Sep 24, 2026
3570488
docs(rocprofiler-sdk): correct the kernel_completion_cb thread-contex…
cursoragent Sep 24, 2026
a6a811e
test(rocprofiler-sdk): cover the configured path of the pc sampling a…
cursoragent Sep 24, 2026
5544d99
merge: counters callback removal (#11970) into the kernel replay inte…
amd-vkale Sep 25, 2026
4c019cc
merge: thread trace callback removal (#11967) into the kernel replay …
amd-vkale Sep 25, 2026
410e54e
merge: PC sampling callback removal (#11969) into the kernel replay i…
amd-vkale Sep 25, 2026
36c07a7
merge: SPM callback removal (#11968) into the kernel replay integration
amd-vkale Sep 25, 2026
9819067
fix(rocprofiler-sdk): report whether the stop-time queue drain actual…
cursoragent Sep 25, 2026
c220a67
fix(rocprofiler-sdk): drop a late counter record instead of aborting …
cursoragent Sep 25, 2026
7f9d53c
Merge branch 'develop' into users/vkale/remove-callbacks-pc-sampling-…
amd-vkale Sep 25, 2026
33b1c5c
fix(rocprofiler-sdk): service thread trace completions that race tear…
amd-vkale Sep 25, 2026
64e97aa
fix(rocprofiler-sdk): pair counter lifecycle transitions
amd-vkale Sep 25, 2026
19b54ab
merge: counters callback removal (#11970) at its current head into th…
amd-vkale Sep 25, 2026
938cfda
merge: thread-trace callback removal (#11967) at its current head int…
amd-vkale Sep 25, 2026
6213acc
merge: pc-sampling callback removal (#11969) at its current head into…
amd-vkale Sep 25, 2026
9d91611
fix(rocprofiler-sdk): serialize context startup transitions
amd-vkale Sep 25, 2026
e01ce9b
docs(rocprofiler-sdk): clarify counter service activeness
amd-vkale Sep 25, 2026
94925d9
docs(rocprofiler-sdk): correct the registry known gap and the sibling…
cursoragent Sep 25, 2026
85cee40
fix(rocprofiler-sdk): keep SERIALIZE_ALL while a thread trace context…
cursoragent Sep 25, 2026
4fad6ec
merge: bring range replay up to date with develop
cursoragent Sep 25, 2026
5903ed2
fix(rocprofiler-sdk): install the async copy wrappers when range repl…
cursoragent Sep 25, 2026
b8da11d
fix(rocprofiler-sdk): decline range replay ranges on batch copies
cursoragent Sep 25, 2026
0321c79
merge: develop into the kernel replay integration
cursoragent Sep 25, 2026
f1aedaf
merge: counters callback removal (#11970) at its current head into th…
cursoragent Sep 25, 2026
936c590
merge: thread-trace callback removal (#11967) at its current head int…
cursoragent Sep 25, 2026
bbb8f50
merge: SPM callback removal (#11968) at its current head into the ker…
cursoragent Sep 25, 2026
c6f8c18
fix(rocprofiler-sdk): keep graph launches off the fast path while ran…
cursoragent Sep 25, 2026
d110193
refactor(rocprofiler-sdk): move range replay's WriteInterceptor logic…
cursoragent Sep 25, 2026
6a941e2
test(rocprofiler-sdk): run range replay with each per-dispatch servic…
cursoragent Sep 25, 2026
9afcdae
merge: range replay (#10864) at its current head into the kernel repl…
cursoragent Sep 25, 2026
af74224
fix(rocprofiler-sdk): decline a range when code objects change inside it
cursoragent Sep 25, 2026
2dbd54e
docs(rocprofiler-sdk): document what compilers and other tools mean f…
cursoragent Sep 25, 2026
217a52e
docs(rocprofiler-sdk): describe range replay's printf behavior per lo…
cursoragent Sep 25, 2026
2a8e0ee
merge: develop into the kernel replay integration
cursoragent Sep 26, 2026
5493f84
merge: range replay (#10864) at its current head into the kernel repl…
cursoragent Sep 26, 2026
6fd8c2b
Merge develop into remove-callbacks-thread-trace--with-cursor-fixes
cursoragent Sep 26, 2026
30bd96c
test(rocprofiler-sdk): build thread-trace resources eagerly in the qu…
cursoragent Sep 26, 2026
cb5bf4e
fix(rocprofiler-sdk): serialize context startup transitions
cursoragent Sep 26, 2026
9dd6af3
test(rocprofiler-sdk): brace the conditional EXPECT_EQs in the SPM st…
cursoragent Sep 26, 2026
a82a958
merge: develop into the kernel replay integration
cursoragent Sep 28, 2026
fcfb3ae
merge: thread trace callback removal (#11967) at its current head int…
cursoragent Sep 28, 2026
ee4a5f4
merge: SPM callback removal (#11968) at its current head into the ker…
cursoragent Sep 28, 2026
cc22232
merge: develop into the kernel replay integration
cursoragent Sep 30, 2026
5f43f09
Merge branch 'develop' into users/vkale/remove-callbacks-pc-sampling-…
Sep 30, 2026
176dffa
test(rocprofiler-sdk): add an operator-run kernel replay performance …
cursoragent Aug 28, 2026
3c32f58
test(rocprofiler-sdk): record how counter groups are collected in the…
cursoragent Aug 28, 2026
005f456
test(rocprofiler-sdk): correct the replay comparison in the benchmark…
cursoragent Aug 28, 2026
7b84845
docs(rocprofiler-sdk): explain how to benchmark kernel replay against…
cursoragent Aug 28, 2026
02c1fdd
fix(rocprofiler-sdk): skip constant symbols during replay restore
cursoragent Sep 22, 2026
08b2ce0
style(rocprofiler-sdk): align the module-scope declarations in the sn…
cursoragent Oct 1, 2026
80fc304
perf(rocprofiler-sdk): keep kernel replay snapshot staging across dis…
cursoragent Sep 28, 2026
82c5565
perf(rocprofiler-sdk): take the kernel replay drain signal from the s…
cursoragent Sep 28, 2026
2a3566c
feat(rocprofiler-sdk): report kernel replay phase timings at INFO
cursoragent Sep 28, 2026
5f9bf15
perf(rocprofiler-sdk): skip HIP's compilation-unit markers in the ker…
cursoragent Sep 28, 2026
381cb13
docs(rocprofiler-sdk): describe retained replay staging and phase tim…
cursoragent Sep 28, 2026
9517f55
perf(rocprofiler-sdk): skip the counters gate scan unless counter col…
Oct 1, 2026
ec66cb3
merge: develop into the kernel replay integration
cursoragent Oct 2, 2026
2158041
merge: counters callback removal (#11970) at its current head into th…
cursoragent Oct 2, 2026
d0b56cb
merge: PC sampling callback removal (#11969) at its current head into…
cursoragent Oct 2, 2026
1b3f311
fix(rocprofiler-sdk): release thread trace serialization only if this…
cursoragent Oct 2, 2026
f19ddcc
Merge branch 'develop' into users/vkale/remove-callbacks-spm--with-cu…
cursoragent Oct 2, 2026
36b34f6
merge: develop into the kernel replay integration
cursoragent Oct 4, 2026
4b5fecb
merge: SPM callback removal (#11968) at its current head into the ker…
cursoragent Oct 4, 2026
937684a
fix(rocprofiler-sdk): keep restoring constant symbols in kernel replay
cursoragent Oct 5, 2026
08bd52f
Merge branch 'users/vkale/kr-perf-1-skip-constant-symbols--with-curso…
cursoragent Oct 5, 2026
a7edd22
Merge branch 'users/vkale/kr-perf-2-pooled-drain-signal--with-cursor-…
cursoragent Oct 5, 2026
eb6dcc1
Merge branch 'users/vkale/kr-perf-3-phase-timings--with-cursor-help' …
cursoragent Oct 5, 2026
d58597b
Merge branch 'users/vkale/kr-perf-4-skip-hip-cuid--with-cursor-help' …
cursoragent Oct 5, 2026
3fa11a4
Merge remote-tracking branch 'origin/develop' into users/vkale/range-…
cursoragent Oct 5, 2026
b567855
perf(rocprofiler-sdk): take the range-entry drain signal from the sig…
cursoragent Oct 5, 2026
6c44494
perf(rocprofiler-sdk): keep range replay's kernarg block for the next…
cursoragent Oct 5, 2026
48d11b8
feat(rocprofiler-sdk): report range replay phase timings at INFO
cursoragent Oct 5, 2026
150c124
test(rocprofiler-sdk): fill snapshot test blocks through either stagi…
cursoragent Oct 5, 2026
0844152
docs(rocprofiler-sdk): describe what range replay shares with kernel …
cursoragent Oct 5, 2026
369faf3
Merge branch 'develop' into users/vkale/remove-callbacks-thread-trace…
cursoragent Oct 5, 2026
67bea3c
merge: develop into the kernel replay integration
cursoragent Oct 6, 2026
1cb814e
merge: thread trace callback removal (#11967) at its current head int…
cursoragent Oct 6, 2026
b6bd5a0
merge: range replay (#10864) at its current head into the kernel repl…
cursoragent Oct 6, 2026
06ec002
fix(rocprofiler-sdk): correct replay benchmark modes and projections
Copilot Oct 6, 2026
5072c17
fix(rocprofiler-sdk): filter readonly module variables by segment
Copilot Oct 6, 2026
4f06fcc
fix(rocprofiler-sdk): drop the kernel replay segment filter that neve…
cursoragent Oct 6, 2026
b91fed5
docs(rocprofiler-sdk): drop the section claim from the kernel replay …
cursoragent Oct 6, 2026
f5eb45a
fix(rocprofiler-sdk): destroy thread trace agents off the async signa…
amd-vkale Oct 7, 2026
12d50d8
merge: thread trace callback removal (#11967) at its current head int…
amd-vkale Oct 7, 2026
1f60da5
test(rocprofiler-sdk): cover set_dispatch_agents() racing a pending S…
amd-vkale Oct 6, 2026
d4b7863
fix(rocprofiler-sdk): start PC sampling under the context start marker
amd-vkale Oct 6, 2026
eb63cdc
Validate kernel replay input jobs before launch
Copilot Oct 7, 2026
ab93c89
Reject replay jobs with empty counter groups
Copilot Oct 7, 2026
c590486
docs(rocprofiler-sdk): say which context teardowns wait on the GPU
amd-vkale Oct 7, 2026
0c8cd70
fix(rocprofiler-sdk): address replay benchmark review findings
Copilot Oct 7, 2026
f6edece
fix(rocprofiler-sdk): record multipass benchmark configs
Copilot Oct 7, 2026
1f98c7a
merge: develop into the kernel replay integration
cursoragent Oct 8, 2026
6863c3b
merge: develop into the kernel replay integration
cursoragent Oct 10, 2026
6de0ed9
merge: develop into the kernel replay integration
cursoragent Oct 12, 2026
433f315
merge: develop into the kernel replay integration
cursoragent Oct 14, 2026
fd8c3cb
merge: develop into the kernel replay integration
cursoragent Oct 16, 2026
c817b7e
merge: develop into the kernel replay integration
cursoragent Oct 16, 2026
38657db
merge: kernel replay performance stack tip (#12610) into the kernel r…
cursoragent Oct 16, 2026
207fbbe
merge: kernel replay benchmark harness (#12885) into the kernel repla…
cursoragent Oct 16, 2026
771d6f7
merge: kernel replay beta-flag gating (#11432) into the kernel replay…
cursoragent Oct 16, 2026
bb29dc1
merge: kernel replay constant-symbol docs (#12886) into the kernel re…
cursoragent Oct 16, 2026
df28b4f
merge: develop into the kernel replay integration
cursoragent Oct 16, 2026
c61aca2
style(rocprofiler-sdk): black-format the kernel replay benchmark harness
cursoragent Oct 16, 2026
20e1dad
merge: kernel replay benchmark harness (#12885) black-format fix into…
cursoragent Oct 16, 2026
c295af0
merge: develop into the kernel replay integration
cursoragent Oct 18, 2026
81b7ed8
merge: develop into the kernel replay integration
cursoragent Oct 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions projects/rocprofiler-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ Full documentation for ROCprofiler-SDK is available at [rocm.docs.amd.com/projec

- rocPD schema 3.0.5 stores SPM counter location on `rocpd_info_pmc`. Each agent and combination of counter, XCC, shader engine, shader array, WGP, and instance has its own pmc id. Location dimensions not provided for a counter are stored as `NULL` and left blank in CSV output. The instance index is always stored. `rocpd_pmc_event` keeps the sample value and points at that id.
- Request ROCr high-precision timestamp correlation during HSA registration when GPU timestamp collection is configured and the runtime provides the tools API. Older runtimes and tools that only trace CPU APIs or markers retain the existing behavior.
**API:**

- Kernel replay keeps its snapshot staging memory between replayed dispatches instead of allocating, zero-filling, and freeing the whole tracked footprint on every dispatch. What is kept between dispatches is bounded by the most recent snapshot's footprint.
- Kernel replay takes its drain signal from the SDK's signal pool and no longer snapshots HIP's one-byte `__hip_cuid_*` compilation-unit markers.
- Each replayed dispatch logs its lock and drain, snapshot, pass, and restore times at `ROCPROFILER_LOG_LEVEL=info`.

### Resolved issues

Expand Down Expand Up @@ -84,6 +89,7 @@ Full documentation for ROCprofiler-SDK is available at [rocm.docs.amd.com/projec

### Resolved issues

- `rocprofv3 --kernel-replay-beta-enabled` given without `--replay-mode kernel` is now rejected instead of ignored. The flag acknowledges that kernel replay is a beta feature; it does not select it. Its name reads as if it did, so a command line carrying only the acknowledgement silently ran application replay, and the counter values that produces are indistinguishable from replayed ones.
- Fixed `rocprofv3` crashing during output generation when a second tool subscribed to code object tracing in the same process, which blocked profiling PyTorch and Triton workloads through rocprofiler-compute.
- Fixed `rocprofv3` hanging instead of exiting when a fatal signal arrives while it is already handling one, for example when output generation aborts. It previously left GPU child processes running and required killing the process manually.
- Fixed memory write-bandwidth telemetry reporting N/A on gfx1250 (MI455X) by adding the missing `WRITE_SIZE` derived counter, computed from the `GL2C_WRITE_SECTORS` hardware counter. The read-side `FETCH_SIZE` counter was already defined for gfx1250 while the write side was not, so downstream consumers such as the memory write-bandwidth field exposed through RDC reported N/A.
Expand Down
1 change: 1 addition & 0 deletions projects/rocprofiler-sdk/benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,4 @@ endif()
include(timem)

add_subdirectory(source)
add_subdirectory(tests)
24 changes: 22 additions & 2 deletions projects/rocprofiler-sdk/benchmark/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,34 @@ times, snapshotting and restoring device memory around each pass. Application re
application N times instead. Which is cheaper depends entirely on the workload, so this
configuration is built to find the crossover rather than to assert a number.

Passing several `--pmc` flags without kernel replay selects application replay: rocprofv3 runs the
application once per group. Counter rotation is a separate mode configured through an input file's
`pmc_groups` and `pmc_group_interval` fields; it runs the application once but no dispatch carries
every group, so it is not a like-for-like comparison.

The jobs vary the three terms of the cost model — `dispatches x tracked footprint x passes` —
independently, so a result can be attributed to one of them instead of to the workload as a whole.
The headline comparison is between two named configurations collecting the same four counters:
A fourth sweep varies how many dispatches the application runs between synchronizations, which is
the axis range replay will be measured on once it exists.

A single rocprofv3 invocation can measure application replay directly: multiple `--pmc` groups
cause one full application run per group. The single-group configuration is retained as a reference,
and the `benchmark_replay_*` views multiply its additive metrics by the group count to project the
total. For the four-group measured and projected comparison:

```bash
rocprofv3-benchmark -i ./kernel-replay.yaml --filter-rocprofv3 replay_4_groups app_replay
rocprofv3-benchmark -i ./kernel-replay.yaml --filter-rocprofv3 replay_4_groups application_replay_4_groups counters_only
```

```sql
SELECT benchmark_label, counter_collection_mode, measured, application_replay_projected
FROM benchmark_replay_wall_time;
```

`scripts/replay_perf.py` measures application replay directly, input-file counter rotation, and
kernel replay, and also covers the cost replay imposes on dispatches that opt out. It drives rocprofv3
itself, so it needs no database and is run by hand rather than in CI.

One job is expected to show almost no overhead: `replay-hip-graph-declines`. A HIP graph launch is
not a single-packet single-dispatch submission, so replay declines it. That job exists to make the
absence visible here rather than in production, since a graph-capturing application gets no replay
Expand Down
79 changes: 67 additions & 12 deletions projects/rocprofiler-sdk/benchmark/kernel-replay.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
# Kernel replay overhead benchmark configuration.
#
# Kernel replay collects N counter groups from a single application run by re-executing each
# dispatch N times, snapshotting and restoring the agent's tracked device memory around each pass.
# The alternative it replaces -- application replay -- runs the whole application N times, once per
# group. Which one is cheaper is entirely a property of the workload, and this configuration is
# built to measure where the crossover is rather than to assert a number.
# There are three ways to collect N counter groups, and they do not collect the same thing:
#
# application replay run the whole application N times, once per group. Every dispatch ends up
# with every group, at the cost of N application runs. This is the thing
# kernel replay is meant to replace.
# multiplexed run the application once and rotate groups across dispatches using the
# input-file pmc_groups / pmc_group_interval options. No dispatch carries
# every group.
# kernel replay run the application once and re-execute each dispatch N times,
# snapshotting and restoring the agent's tracked device memory around each
# pass. Every dispatch ends up with every group, from one run.
#
# Only application replay and kernel replay produce the same data, so only those two are a
# like-for-like comparison. Which of the two is cheaper is entirely a property of the workload, and
# this configuration is built to measure where the crossover is rather than to assert a number.
#
# One benchmark job is one rocprofv3 invocation, and multiple CLI --pmc groups make that invocation
# run the application once per group. application_replay_4_groups below measures that cost directly.
# The single-group job is also retained as a reference: benchmark_replay_* projects its cost across
# the group count when that estimate is useful.
#
# The cost model the jobs are laid out against is:
#
Expand All @@ -21,15 +36,15 @@
#
# Run with:
# rocprofv3-benchmark.py -i kernel-replay.yaml
# rocprofv3-benchmark.py -i kernel-replay.yaml --filter-rocprofv3 replay_4_groups app_replay
# rocprofv3-benchmark.py -i kernel-replay.yaml --filter-rocprofv3 replay_4_groups application_replay_4_groups counters_only
#
# See docs/conceptual/kernel_replay/kernel_replay_performance.md for what the numbers mean.

defaults:
rocprofv3:
# The comparison that matters. Both collect the same four counter groups; replay_4_groups does
# it in one application run, app_replay in four. Filter to just these two for the headline
# number.
# The comparison that matters. replay_4_groups collects four groups on every dispatch in one
# application run; application_replay_4_groups runs the application once per group. The
# counters_only reference also lets the view project application replay from a single-group run.
replay_4_groups:
[
--replay-mode,
Expand All @@ -44,7 +59,9 @@ defaults:
--pmc,
SQ_BUSY_CYCLES,
]
app_replay:
# The same four groups without kernel replay: rocprofv3's default application-replay mode runs
# the application once per group.
application_replay_4_groups:
[--pmc, SQ_WAVES, --pmc, GRBM_COUNT, --pmc, SQ_INSTS_VALU, --pmc, SQ_BUSY_CYCLES]

# Pass-count sweep at fixed footprint and dispatch count. Wall time should grow roughly
Expand Down Expand Up @@ -84,8 +101,12 @@ defaults:
SQ_INSTS_SMEM,
]

# Counter collection without replay, as the floor: whatever this costs is attributable to
# counter collection rather than to the replay machinery.
# One counter group, no replay. Two jobs in one: the floor, so that whatever the replay
# configurations cost above it is attributable to the replay machinery rather than to counter
# collection, and the unit of application replay, since collecting G groups that way is this
# run repeated G times. The benchmark_replay_* views look for exactly this configuration when
# projecting what an application replay would have cost, so it needs to stay in any filtered
# run that is meant to produce a comparison.
counters_only: [--pmc, SQ_WAVES]

benchmark:
Expand Down Expand Up @@ -165,6 +186,40 @@ jobs:
group: [kernel-replay, dispatch-sweep]
command: [transpose, 1, 2000, 100, 2048, 2048]

# ---------------------------------------------------------------------------
# Dispatches-per-range axis: same dispatch count, footprint and pass count, but the application
# synchronizes after every nth dispatch instead of at a fixed cadence.
#
# transpose's third argument is how many dispatches it enqueues between stream synchronizations,
# which is the length of an uninterrupted run of dispatches. Kernel replay drains the agent per
# replayed dispatch, so an application that already synchronizes constantly has less to lose from
# that drain than one that keeps a deep queue in flight, and this sweep is what separates the two.
#
# It is also the axis range replay will be measured on. Range replay snapshots once per range
# rather than once per dispatch, which turns the cost model from
#
# dispatches x footprint x passes into ranges x footprint x passes
#
# so the saving is proportional to how many dispatches fall inside a range. Recording the axis now
# means the kernel replay numbers it will be compared against already exist, measured on the same
# workloads, rather than having to be regenerated later against a moved baseline.
# ---------------------------------------------------------------------------
- name: replay-sync-every-dispatch
group: [kernel-replay, range-length-sweep]
command: [transpose, 1, 500, 1, 2048, 2048]

- name: replay-sync-every-10-dispatches
group: [kernel-replay, range-length-sweep]
command: [transpose, 1, 500, 10, 2048, 2048]

- name: replay-sync-every-100-dispatches
group: [kernel-replay, range-length-sweep]
command: [transpose, 1, 500, 100, 2048, 2048]

- name: replay-sync-once
group: [kernel-replay, range-length-sweep]
command: [transpose, 1, 500, 500, 2048, 2048]

# ---------------------------------------------------------------------------
# Application shapes.
# ---------------------------------------------------------------------------
Expand Down
Loading
Loading