[HRR](1)
π NAME π
okay bestie, so this is HRR β the HIP Record & Replay workload replay tool. that's it, that's the whole name section, we move β¨
π¦ SYNOPSIS π¦
hrr-playback <capture.hrr> [options]
literally just hand it your capture file and whatever options you're feeling, and she goes π
π OPTIONS π
--infoβ prints the archive summary and dips. no GPU required, so you can snoop on a capture from your sad little laptop with no card in it π«Ά--repairβ rewrites a crash-truncated archive into a clean one, then bails. yes she can fix your messy recording, we love a healer π--eventsβ only means something next to--info: also dumps the full event log--verboseβ prints each event as it gets processed. chatty queen π--skip-device-syncβ skip the device/stream synchronize events entirely--multi-threadβ enables multi-threaded replay. (default: single-threaded, fyi)--timingβ reports wall time and total GPU kernel time. numbers girlies rise β±οΈ--kernel-filterSTR β only launches kernels whose name contains STR. note: a silent full warm-up pass runs first, so don't be spooked, that's intentional--replace-kernelN=P β launches the kernel whose recorded name is exactly N from code object P (.hsaco) instead of the recorded one. N has to be the full recorded symbol (go look at--info; it's mangled for C++/chevron kernels). repeatable, so stack it for multiple kernels. recorded args/grid/block get reused, and the archive is not modified. swap the code, keep the fit π--sync-after-launchβhipDeviceSynchronizeafter every kernel launch--sync-after-eventβhipDeviceSynchronizeafter EVERY event. slowest, most precise. the drama is the point π--sync-watchdog-msN β aborts with a diagnostic if any device synchronize doesn't complete within N ms. catches hung/deadlocked kernels, like StreamK flag spin-waits π.0= disabled--trace-kernelsβ prints one compact line before every kernel launch--trace-syncβ prints sync begin/done markers around kernel syncs--progress-kernelsN β prints a heartbeat every N launched kernels--progress-secondsS β prints a heartbeat at most every S seconds--helpβ shows this message π«Ά
πΈ Environment (replay device allocation padding ??? see hip_playback.cpp) πΈ
that ??? is literally in the source, not me being mysterious, iykyk π§
HIP_HRR_REPLAY_ALLOC_PAD_FACTORβ unsigned, default1(exact recorded sizes). use256for legacy pool-style headroom, which means more VRAM being eaten. your call bestieHIP_HRR_REPLAY_ALLOC_PAD_MAXβ bytes, default1073741824(that's a 1 GiB cap per alloc)
β¨ Environment (lightweight replay tracing) β¨
same energy as the flags above, just dropped through the environment instead:
HIP_HRR_REPLAY_TRACE_KERNELS=1β same as--trace-kernelsHIP_HRR_REPLAY_TRACE_SYNC=1β same as--trace-syncHIP_HRR_REPLAY_PROGRESS_KERNELS=Nβ same as--progress-kernels NHIP_HRR_REPLAY_PROGRESS_SECONDS=Sβ same as--progress-seconds SHIP_HRR_REPLAY_SYNC_WATCHDOG_MS=Nβ same as--sync-watchdog-ms N
okay so, default mode: single-threaded, serialize GPU after the pass, abort on the first error. if you need to pinpoint the exact event causing a GPU fault or hang, that's what --sync-after-event is for. it's slow and it's worth it, no cap π
and the usage line, verbatim:
Usage: debian/tmp/usr/bin/hrr-playback <capture.hrr> [options]
π real talk: this manpage prints that whole options block twice. flags, env vars, the default-mode paragraph β the whole thing, again, right after itself. the second copy is the one that carries the Usage: line above. so if you're skimming and feel deja vuβ¦ you're not losing it, the page really did that. iconic of her, honestly π
that's the whole thing bestie, go replay some workloads and slay πβ¨ β this was the hrr-playback page, HRR(1), dated October 2026 π
π¦ where this page comes from
- ubuntu stonking: hip-utils 10.0-0ubuntu3 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms