Pull requests / #3038
#3038 bench: community report, Radeon 890M (gfx1150) on 0.1.45: the shipped hipBLASLt table's A/B and the 17 exact switches' identity check
open · @zeriyoshi · 0 commentaires · Sur GitHub
BenchmarksSetup & installServer & APIMulti-GPUAMD / HIPNVIDIA / CUDAModels & quantsSecurityDocumentation
Description
## Title bench: community report, Radeon 890M (gfx1150) on 0.1.45: the shipped hipBLASLt table's A/B and the 17 exact switches' identity check Issue: Follow-up to #1395 (and #1217) ## Summary The two measurements asked for in #1395, on 0.1.45 (`477ac13`), Radeon 890M, AMD TheRock ROCm 7.14.1 for gfx1150 (hipBLASLt 100401). Results only, no engine change. 1. **The shipped table** (`tools/hip/gfx1150-hipblaslt-100401.txt`, as 0.1.41+ ship it) against plain hipBLAS: prompts read **1.54x / 1.72x / 1.74x faster** at 1K / 3.6K / 7K tokens, decode unchanged. 2. **The 17 exact switches** (gfx1151's exact defaults less `STRATA_HCD_EXACT`, the set `STRATA_EXPERIMENTAL_GFX1150=1` writes since #2147), all off against all on: the greedy token ids of 10 short prompts plus a 4K and a 20K prompt are **12 / 12 identical** on two models. ## What changed - `bench/results/2026-10-18-community-gfx1150-0.1.45/` (new) - `README.md`: the rig, the method, the results and what was not tested - `runs.csv`: every run of the table A/B (13 runs) - `identity.csv`: every case of the identity check (sha-256 of each case's token ids, times, draft acceptance) - `calibrate.json`: `tools/calibrate.py`'s output on this machine - `strata-gfx1150.json`: the server config the runs started from - `scripts/strata_ident.py`: the identity check (starts the engine directly and saves the generated token ids) - `bench/results/COMMUNITY.md`: one row for the new folder (the PR column reads `-`) - `docs/COMMUNITY_BENCHMARKS.md`: one entry for the new folder ## Measurements **1. The shipped table against plain hipBLAS.** GSQ-RCO IQ3_XXS, the 17 switches on both sides, a server restart per run (cold prompt cache), one request at a time, the engine's own `strata serve: prompt` timings. Five rounds of the two arms with the order alternating (H T, T H, ...) and the prompts of the 2026-10-07 README (a short chat three times, then fresh document prompts of about 1K, 3.6K and 7K tokens); a third arm with `STRATA_HIP_WMMA=1` in the first three rounds for reference. | Prompt | plain hipBLAS | table | table + `STRATA_HIP_WMMA=1` (3 rounds, reference) | |---|---:|---:|---:| | 987-989 tokens | 95.4 tok/s | 147.0 (1.54x) | 152.2 | | 3,562-3,564 tokens | 128.5 | 221.5 (1.72x) | 254.3 | | 7,009-7,010 tokens | 132.8 | 231.6 (1.74x) | 277.2 | | decode, short chat | 15.2 | 15.2 | 15.2 | Medians; every round gave the same order and the spreads are within ±1.5%. Every table run logged `prefill gemm: hipBLASLt tuning enabled (144 rows, gfx1150, version 100401)`. **2. Identity check of the 17 switches.** `ATTN_LANECELL CVEC_FUSE EXPERT_V2 GDN_CONVL2 GDN_HEAD GDN_NOY GDN_PP=2 GDN_SPLIT LFUSE MMVF_ROWS PF_PAD PLE_BATCH Q6_PACKED Q8_PACKED QFUSE SH_STREAM TSUM` (all `STRATA_`), all off against all on, both sides with the table and without `STRATA_HIP_WMMA`. The engine is started directly (`serve.server.StrataEngine`, as `tools/calibrate.py` does); greedy, no thinking, MTP on, one request at a time in a fixed order: 10 short prompts (128 tokens out), then a 4,024-token and a 20,024-token prompt (this checkout's `docs/*.md`, 64 tokens out). The generated token ids are compared. | Model | Runs | Result | |---|---|---| | GSQ-RCO IQ3_XXS | off, on, off, on | 12 / 12 identical off against on (both pairs), and each side identical to its repeat | | OrcaRouter Qwen3.8-Flash-Next-Uncensored IQ3_XXS | off, on | 12 / 12 identical | - The HIP ctest suite with the 17 set in the environment (and the table): the same results as without them (only `ple_parity` fails, as always: it needs `bench/micro`) - Speed from the same runs: decode +0-3%, the 20K prompt +2-4% **3. `tools/calibrate.py`** run by hand on this machine (setup does not offer it on AMD) finds nothing over its 3% bar: every expert is in the GTT pool, so the PCIe share is flat. `STRATA_SH_STREAM=1` measured +2% and `--spec-min-p 0.7` +1.2%. ## Extra Notes - Machine: MINISFORUM N5 PRO, Ryzen AI 9 HX PRO 370, Radeon 890M (gfx1150, 16 CUs), 96 GB DDR5-5600, GTT 70 GiB; Proxmox VE 9.2 with kernel 7.0.14-24-pve, the engine in an unprivileged LXC container; engine 0.1.45 built by hand with `-DCMAKE_HIP_ARCHITECTURES=gfx1150`. ctest: 71 of 75 pass (the README lists the skips and the failure). - `--kv-grow` reports "off" on HIP because `src/core/vmm.cpp` has no HIP path (`vmm_available()` is false); `docs/DETAILS.md` lists its conditions without saying it is CUDA only. - Not tested: KL or task quality (`STRATA_HIP_WMMA` changes bits and is not part of the identity check), other ROCm versions (#2147's `gfx1150-hipblaslt-100500.txt` was not tried), setup itself (the configs are hand-written with the same `env` that setup writes), identity-check prompts past 20K tokens. - **The identity check compares the generated token ids, not dumps.** If your gate needs more before the 17 switches can be a gfx1150 default (the 4K / 20K residual or first-window logits dumps, for example with `STRATA_DUMP_FIRST_LOGITS`, your own prompt set, longer prompts or other models), let me know and I will rerun it on this machine.
Sur le site
Liens install, modèles, releases.