| name | flyprof-capture |
| description | Capture a rocprofv3 ATT (Advanced Thread Trace) for a FlyDSL kernel with flyprof, including kernel discovery, tile sizing, and handling empty/out-of-range dispatches. Use when you need to record a kernel's per-instruction trace before analysis, or when `flyprof capture` returned EMPTY_ATT / DISPATCH_OUT_OF_RANGE / NO_KERNEL_DISCOVERED.
|
| allowed-tools | Bash(flyprof:*), Read |
flyprof-capture — record an ATT trace for one kernel
The recon→size→capture loop. Each step's output is one JSON envelope; check it
before the next step.
Runbook
Downgrade table (error.code → action)
| code | meaning | action |
|---|
NO_KERNEL_DISCOVERED | --stats found no FlyDSL kernel | check error.candidates; the test may not launch a kernel, or all were noise-filtered. Try a non-trivial --shape. |
EMPTY_ATT | dispatches were empty shells | the grid was too small to hit att_target_cu. Enlarge --shape, or set --iter-range to a launch that actually runs. |
DISPATCH_OUT_OF_RANGE | iteration range missed | use a value from error.available. |
CAPTURE_TIMEOUT (75) | rocprofv3 ran too long | retry once with a larger --timeout or smaller --shape. Budget one retry. |
BUILD_TREE_MISSING (78) | no built FlyDSL | STOP; fix --worktree. |
Notes that bite
- Never reuse a
dispatch_<N> number across runs — rocprofv3 renumbers dispatches
every run. Always read kept_dir from the fresh capture.json; never hard-code it.
- A
KERNEL_COMPILE_FAIL is a finding, not a loop trigger — report it and stop
(don't retry with tweaks hoping it compiles).
--with-pmc runs a separate PMC pass (PMC inside an ATT job is unreliable); it
re-runs the workload several times and is the slow part — budget minutes, not seconds.
See references/rocprofv3-quirks.md for dispatch numbering / iteration-range fence-posts.