preflight: rocm7-0-34-4-dynres lists 908 — no gfx1151 kernel changes - #385
Merged
glennneuber merged 1 commit intoSep 25, 2026
Merged
Conversation
The ROCm build applies 908 in both stages, so the patch set lists it. The note records the check #375 asked for. The image built from 5584539 differs from the fold image in libggml-hip.so only, out of 1863 payload files. In the library's gfx1151 code objects, the 78 FA MMA kernels are byte-identical. The 184 NO_DEVICE_CODE stubs differ only in their __LINE__ literal. The host code differs in line literals and in the Ampere config rows, which gfx1151 does not read, because it takes the RDNA table. Preflight on that image: PASS=20 SKIP=12, with every value equal to the first run apart from the version and the image tag. The run record is added, force-added past the runs/ ignore like the others. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds 908 to the
rocm7-0-34-4-dynrespatch set and records the gfx1151 check that #375 asked for. It targets #375's branch, notmain. I measured it on gfx1151 only, and it touches no other platform's profile.What
expectations.toml.rocm7-0-34-4-dynresnow lists908, with a provenance note in the same form ascuda-dynres-903's. The ROCm build applies 908 in both stages, so the patch set must list it.reference_imagestays0.34.3-dynres-5-g29ae523, which is the image the ladders were measured on.runs/preflight-rocm7-0344-fold-g5584539.json. It is force-added past theruns/ignore, as the other cited records are.Measured: 908 changes no gfx1151 kernel
I built
558453953withscripts/build_rocm.shasmaxusai-ollama:0.34.3-dynres-22-g5584539-rocm7-gfx1151. The build took 47 s from ccache. All eight patches apply in the CPU stage and the HIP stage. I compared it with the fold image0.34.3-dynres-5-g29ae523:Payload. I took the sha256 of every entry. There are 1863 on each side, with no file on one side only. One file differs:
rocm_v7_2/libggml-hip.so.gfx1151 device code. I split the library's
.hip_fatbininto its offload bundles. There are 138 in each build, and 22 differ, all in.textonly. Section sizes, symbol tables,.rodataand the kernel descriptors are identical.flash_attn_ext_f16kernels that compile for gfx1151 are byte-identical. They cover D = 64 to 256, and 18 of them are at D = 256.flash_attn_ext_f16entries are 48-byteNO_DEVICE_CODEstubs. On RDNA, every D = 512 variant is one of these. Each stub differs in exactly one byte: the__LINE__literal that it passes tono_device_code. The literal changes 1833 → 1807 in 90 stubs (the logit-softcap filter) and 1861 → 1835 in 94 stubs (the RDNA WMMA filter). The cause is that 908 deletes 26 lines offattn-mma-f16.cuhabove both.Host code in the same library.
.textis 80 bytes shorter, and.rodatais 16 bytes longer. After I normalise addresses, the disassembly differs in 277 hunks:__LINE__literals of the twoCUDA_CHECK(cudaFuncSetAttribute(…))calls in the MMA launcher (2085/2098 → 2059/2072);{nbatch_V2, nbatch_combine}= 128 ↔ 256, and the compare chain that selects them;The host picks the config table by device.
ampere_mma_available(),turing_mma_available()andvolta_mma_available()are false on every AMD device, so gfx1151 takesggml_cuda_fattn_mma_get_config_rdna, which 908 leaves unchanged. The RDNA fallback isfattn_mma_config(32, 1, 0, …), not the Ampere table.So #375's reading holds. On gfx1151, 908 amounts to a template-parameter rename and line numbers. No kernel changes, and no launch parameter that gfx1151 reads changes.
Preflight on the 908 image: VERDICT PASS, PASS=20 SKIP=12
I ran
preflight.py --platform rocm7 --qualityagainst the 908 image, on a container of its own, with 908 in the patch set. Every check reads the same value as run 1 on0.34.3-dynres-5-g29ae523, apart from the version and the image tag:payload_pinreads161755f29;think_formatpasses in 1401, 127 and 273 tokens.The 12 skips are the same as run 1's.
Verification
python3 test_verdicts.pypasses: 196 tests OK, 6 skipped.test_summarizers.pyandtest_rescore.pypass too.libggml-hip.sofrom each. Split.hip_fatbinon__CLANG_OFFLOAD_BUNDLE__and take each bundle'samdgcn-amd-amdhsa--<gfx>entry. Then compare eachFUNCsymbol's bytes in.text.amd-server/rocm-gfx1151🤖 Generated with Claude Code