Pull requests / #2880
#2880 hip: hipBLASLt tuning table for gfx1200 (RX 9060 XT, hipBLASLt 1.5.0 / 100500)
open · @monscoro · 0 comments · View on GitHub
BenchmarksSetup & installAMD / HIPDocumentationWindows
Description
## Title
hip: hipBLASLt tuning table for gfx1200 (RX 9060 XT, hipBLASLt 1.5.0 / 100500)
Issue: none (a data table, no tracking issue).
## Summary
Adds `tools/hip/gfx1200-hipblaslt-100500.txt`, a 57-row hipBLASLt tuning table for the RX 9060 XT (gfx1200) on the hipBLASLt 1.5.0 (version number 100500) that the prebuilt Windows engine packages. setup picks the table by its header, so there is no code or default change: an install that does not report gfx1200 with hipBLASLt 1.5.0 keeps the path it has today, and the existing `gfx1200-hipblaslt-100202.txt` stays in place for ROCm 7.2.4's hipBLASLt 1.2.2.
Measured on one Windows machine, fresh prompts read 5.8 % (4K) and 5.9 % (16K) faster than plain hipBLAS, decode unchanged.
## What changed
- **`tools/hip/gfx1200-hipblaslt-100500.txt`** (new): 57 rows over 22 GEMM geometries at T = 37 .. 6144, calibrated against AMD's TheRock hipBLASLt 1.5.0 for gfx1200 (`STRATA_HIPBLASLT_TUNING_V1 gfx1200 100500`). The solution IDs are scoped to that hipBLASLt version and architecture. The prebuilt Windows engine carries ROCm 10.2.0a20260930 with that hipBLASLt, so on Windows gfx1200 this is the table that fits the shipped library; without one the engine warns that the prompt's dense matrix products go through plain hipBLAS.
- **`docs/AMD_HIP.md`**: the entry in "Shipped tables" and a community-validated-card bullet with the measurement.
- **`bench/results/COMMUNITY.md`**: two rows, one per new folder.
- **`bench/results/2026-10-16-community-rx-9060-xt-swift-1-5-iq2-xs-hipblaslt-100500/`** (new): the tuned arm, with `README.md`, `results.json` and `engine-log-excerpt.txt`.
- **`bench/results/2026-10-16-community-rx-9060-xt-swift-1-5-iq2-xs-hipblas/`** (new): the plain-hipBLAS arm of the same A/B, same three files.
### Measurement
RX 9060 XT 16 GB (gfx1200), Windows 11, Ryzen 9 3900X, 64 GiB RAM, engine 0.1.44.1 (prebuilt Windows HIP), Swift 1.5 IQ2_XS (GSQ-RCO abliterated) at 65536 ctx with `--kv int8 --kv-resident 32768`. `tools/strata_bench.py`, 3 runs per test, medians with ranges; the two runs differ only in `STRATA_HIPBLASLT_TUNING`. `--expert-cache auto` even sized the tuned arm's expert cache 1.8 % smaller (5,282 vs 5,377 experts), so the gain is not from a larger cache.
| test | plain hipBLAS | with the table | gain |
|---|---|---|---|
| 4,019-token fresh prompt | 478.5 tok/s (472.0-479.6) | 506.2 (502.3-507.5) | +5.8 % |
| 16,058-token fresh prompt | 548.3 (545.5-552.8) | 580.6 (579.6-581.1) | +5.9 % |
| first token, 4K | 8.43 s (8.41-8.55) | 7.99 s (7.95-8.03) | -5.2 % |
| first token, 16K | 29.33 s (29.09-29.49) | 27.70 s (27.68-27.75) | -5.6 % |
| decode (short chat) | 42.4 tok/s (36.6-47.8) | 42.5 (37.2-47.4) | unchanged |
The prompt ranges of the two arms do not overlap; the decode ranges do. The engine logged `prefill gemm: hipBLASLt tuning enabled (57 rows, gfx1200, version 100500)` and no fallbacks.
## Extra Notes
- The suite's prompt tests are 4K and 16K tokens; a longer prompt (the suite's `--long` 32K, and the 65K / 130K prompts of the gfx1200 report in `docs/AMD_HIP.md`) was not measured here, so the gain at those sizes is unmeasured.
- `tools/strata_bench.py` named the adapter from Windows' display-class registry, which still lists the owner's retired Radeon RX 470, so the first version of both reports said "RX 470, 8 GiB, driver 31.0.21923.11000". The GPU and driver lines in the two READMEs and `results.json` are corrected by hand to what the engine's own log shows (`strata generate: GPU 0: AMD Radeon RX 9060 XT (gfx1200)`, driver 32.0.31041.1004). That detection is worth its own issue.
- `python tools/test_setup_amd.py` (40 tests) and `python tools/test_setup_choices.py` (47 tests) pass. `setup.hipblaslt_table("gfx1200", [], 100500)` returns the new file, 100202 still returns the older one, and an unknown version still gets the "no table" warning.
- Not run here: a rebuild of any backend (this PR touches no code, only a data table, docs and benchmark reports) and `hip_prefill_hipblaslt_gemm` with the table set. The community who can run the calibration tool against another 1.5.0 build is welcome to; the ids are only guaranteed for this one.
- Left alone: `tools/hip/gfx1200-hipblaslt-100100.txt` (a local file, not part of this PR), the engine, setup's selection logic and every other architecture's table.
Related on this site
Quick links to related pages.