Repository navigation
test(hip): re-derive every gate-5 record with ROCm 10.1 - #1979
Conversation
|
Thanks @laudney. Decision: ROCm 10.1's hipcc becomes the single reference for HIP gate-5 launch records. The change is record values only (127 of 148 launches: VGPR/SGPR counts and 3 scratch rows; LDS, bounds and waves unchanged; names, launches and controls byte-identical), with no kernel, build or test file. Contract runs on an older ROCm will now fail loudly as stale rather than pass on old numbers, and serving is untouched. It's in the landing queue. |
The HIP launch records held ROCm 7.13's compiled usage, so on a host with ROCm 10.1 every record read stale (502 limit problems) and gate 5 checked nothing there; ROCm 10.1 is now the reference, and each of the 148 records' usage is rewritten from the limits audit's own RECORD lines over 10.1's code objects for gfx1030, gfx1100, gfx1151 and gfx1201, with the reference hipcc named in the contract guide.
97075bf to
1767294
Compare
|
Thank you @laudney. This is merged into main with your commits under your own name, so you're listed as a TensorFold contributor. It ships in the next release, credited to you in the changelog and the release notes. |
The ROCm 10.1 gate-5 records (ashhart#1979) and the MoE gate and router contracts reached main, and they touch the same shared lists as this branch, so main is merged in, not rebased, to keep the open PR's history. The contract runner keeps both sets of kernels, the HIP record list ends with the router records and then the dense GEMM records, and the CHANGELOG keeps every Unreleased entry.
|
Since #1979 makes ROCm 10.1 the reference compiler, here is how the engine runs under it against Ubuntu 26.04's own ROCm 7.1 packages (hipcc 7.1.1, clang 21; ROCm 10.1 is HIP 7.16, clang 24). Setup: the same source (the #1658 branch rebased on main cfcbecb), built with each toolchain, on one Strix Halo iGPU (gfx1151), zig 0.17.0, probe Flash Next checkpoint,
Means with the two runs in brackets. One B run of the cold 8K prompt took 72.2 s against 23.7 s in the other; I have no cause for it and did not repeat it, so I leave it out of the comparison. Every Reading: ROCm 10.1 is 1.4 to 2.5% slower than Ubuntu's 7.1 here, and the 10.1 binary on the 7.1 runtime reads the same as on the 10.1 runtime, so the gap comes from the compiler and not the HIP runtime. Prompt speed is within a percent. Not run: any other GPU or family. |
|
Thanks @laudney! This is in TensorFold 1.2.2, out now: https://github.com/ashhart/TensorFold/releases/tag/v1.2.2 |
Part of #1977. Independent of #1978 (its own records are already ROCm 10.1 counts).
Every HIP gate-5 record re-derived with ROCm 10.1's hipcc, so the limit gate checks something again on a ROCm 10.1 host.
hip-kernel-contract-limitswith ROCm 10.1 (gfx1030, gfx1100, gfx1151, gfx1201)hip-kernel-contracton an AMD Radeon AI PRO R9700 (gfx1201), its live limit gate52 kernels: 52 pass gates 1-4, 0 fail, 2 known findings; 5 controls: 5 red as planted, 0 missed; 0 limit problemsWhat this changes
The 148 HIP launch records in
zig/src/core/contract/hip_records*.zigheld what ROCm 7.13's hipcc compiled. A host withROCm 10.1 compiles different register counts for most launches, so gate 5 reported every record stale and the
limit check could not tell a real overrun from a compiler difference. This PR takes ROCm 10.1 as the reference and
rewrites each record's four
.usagerows from the audit's ownRECORDlines. No value is typed by hand: a scriptreplaced the rows in the order
check()walks the records and refused any record whose source name differed fromthe audit's. 127 records changed; 21 already matched. No kernel source, launch, bound or control changes.
docs/kernel-contract.mdnow names the reference: ROCm 10.1's hipcc, which ROCm 10.1 installs undercore/binofits root (pass that path to
-Dhipcc; thebin/hipccwrapper there loses the device math headers).Receipt
upstream/maind8aeab9 + this commit; ROCm 10.1 (HIP 7.16); AMD Radeon AI PRO R9700(gfx1201); Zig 0.17.0.
zig build hip-kernel-contract-limits -Dhip=true -Dhipcc=<rocm>/core/bin/hipcc: beforeFAIL kernel-contract-limits: 502 problems; afterPASS kernel-contract-limits: every registered launch fits gfx1030, gfx1100, gfx1151 and gfx1201, every record current, every control red.zig build hip-kernel-contract -Dhip-arch=gfx1201on the R9700:SUMMARY gfx1201 52 kernels: 52 pass gates 1-4, 0 fail, 2 known findings; 5 controls: 5 red as planted, 0 missed; 0 limit problems(exit 0); the 2 known findings are the existing prompt-tile non-finite entries.zig build test-kernel-contract: 164/164 passed.audit, which covers all four chips).
Merging with other HIP PRs
Open PRs that add or change HIP records (for example #1612, #1614, #1622, #1658, #1694, #1877) touch the same record
lists. Whichever lands second takes a plain merge of the neighbouring lines; a record a PR adds with ROCm 7.13 counts
then reads stale under this reference until
hip-kernel-contract-limitsre-derives it (itsRECORDline is the value).