Issues / #2828

#2828 Community benchmark: RX 7900 XTX 24 GB (Windows 11, HIP 0.1.44.1), Flash-Next IQ3_XXS at 262K - 2,077 tok/s prompt at 32K, 91 tok/s decode

open · @KhnKB · 0 comments · View on GitHub

BenchmarksSetup & installAMD / HIPNVIDIA / CUDAModels & quantsDocumentationWindows

Description

A benchmark report for the community list (docs/COMMUNITY_BENCHMARKS.md), made with `tools/strata_bench.py --long` on the official 0.1.44.1 Windows HIP engine. As far as I can see there is no full-model RX 7900 XTX report on Windows yet.

**Headline (medians of 3 runs):** chat decode **91.1 tok/s**, prompt **939 / 2,008 / 2,077 tok/s** at 4K / 16K / 32K, agent session decode 104.8 tok/s with a 68.8% conversation-cache hit.

**Machine:** RX 7900 XTX 24 GB on PCIe Gen4 x8, Ryzen 7 9800X3D, 64 GB RAM, Windows 11, Samsung 980 PRO. GPU tuned in Adrenalin: core 2,800 MHz, VRAM 2,800 MHz, 1,000 mV, power limit +15%.

**Settings kept** (changed from setup's defaults for this machine):

- `--prefill auto:32768`
- `STRATA_PF_FUSED=1`, `STRATA_PF_GEMM=1`, `STRATA_PF_SWITCH_MIN_T=4096`
- `--pcie-frac 0`
- `STRATA_ROUTE_TAIL_SKIP=7`
- `--max-context 262144`, `--kv int8 --kv-resident 32768`

**Note for other XTX owners on Windows:** the 32K prompt chunks only run with a large page file. Engine 0.1.44.1 warns that chunks of 8K and more crashed XTX engines through a commit-charge jump (#1630); with 32-48 GB of page file (commit limit 99 GB) nothing crashed here.

Happy to turn this into a pull request adding `bench/results/2026-10-17-community-rx-7900-xtx-qwen3-8-flash-next-iq3-xxs/` (README, results.json, engine-log-excerpt.txt) if that is preferred.

------------------------------------------------------------------------
The full report:

# Community benchmark on AMD Radeon RX 7900 XTX

Measured on 2026-10-17 with `tools/strata_bench.py` (suite 1, 3 runs per test, medians with ranges). Speeds are the engine's own timings; first-token times are measured by the client over HTTP. Speed only: no correctness check was run.

## Hardware and software

- GPU and VRAM: AMD Radeon RX 7900 XTX, VRAM not read
- CPU: AMD Ryzen 7 9800X3D 8-Core Processor (8 cores, 16 threads); installed RAM: 63.1 GiB; storage: not measured
- OS: Windows 11 (10.0.26200); GPU driver: not read; CUDA: not read
- Strata: project 0.1.44.1, commit 296b59d2; engine 0.1.44.1
- Background workloads: not recorded; power limit and clocks: see "Added by hand" below

## Model and configuration

- Model and quantization: qwen3.8-flash-next-iq3_xxs
- Context: 262144 tokens; parallel slots: 1
- Settings: the install's own configuration (hip backend), tuned for this machine (see "Settings kept" below) and not changed by the benchmark; thinking off for the suite; temperature 0

```text
strata.exe --pack iq3_xxs --native Qwen3.8-Flash-Next-GSQ-RCO-IQ3_XXS-00001-of-00002.gguf --ple-gguf Qwen3.8-Flash-Next-GSQ-RCO-IQ3_XXS-00002-of-00002.gguf --expert-profile expert-profile.bin --expert-cache auto --prefill auto:32768 --spec 4 --spec-min-p 0.5 --mtp rt --max-context 262144 --kv int8 --kv-resident 32768 --pcie-frac 0
```

Environment of the config: `STRATA_HIPBLASLT_TUNING=gfx1100-hipblaslt-100500.txt`, `STRATA_PF_FUSED=1`, `STRATA_PF_GEMM=1`, `STRATA_PF_SWITCH_MIN_T=4096`, `STRATA_ROUTE_TAIL_SKIP=7`

## Method

Run by `python tools/strata_bench.py --long` against the HTTP API of a Strata server (started by the benchmark from the install configuration); model loading is not timed. One warm-up chat and a 1K prompt are discarded first. Every prompt starts with a unique tag, so the conversation cache cannot help the fresh-prompt tests.

- short chat: the three questions of `tools/ab_engine.py`, up to 100 new tokens, 3 runs
- 4K / 16K prompts: generated word lists sized by a calibration request, 24 new tokens, 3 fresh prompts each
- agent session: system prompt and four tools, then 5 turns that each add about 1500 words of a project file and continue from the model's own earlier answers (the way agent clients resend a conversation), 64 new tokens per turn, 3 sessions; the cache numbers come from the answer's usage (`cached_tokens`) and timings (`prompt_n`)
- concurrency (when run): N requests sent at the same moment, total tokens over the wall time of the burst, latency over all requests

## Results

| Configuration | Actual prompt tokens | Reused tokens | Generated tokens | Runs | Prompt tok/s median and range | Decode tok/s median and range | TTFT seconds median and range |
| --- | ---: | ---: | ---: | ---: | --- | --- | --- |
| short chat | 46 (43-51) | 0 | 100 (100-100) | 9 | not measured | 91.1 (80.7-118.2) | 0.28 (0.24-0.31) |
| 4K prompt, fresh | 4019 (4019-4019) | 0 (0-0) | 24 cap | 3 | 939.0 (932.7-949.4) | not measured | 4.30 (4.26-4.34) |
| 16K prompt, fresh | 16058 (16058-16058) | 0 (0-0) | 24 cap | 3 | 2008.0 (2006.8-2012.8) | not measured | 8.03 (8.00-8.03) |
| 32K prompt, fresh | 32049 (32049-32049) | 0 (0-0) | 24 cap | 3 | 2077.1 (2077.0-2078.6) | not measured | 15.46 (15.45-15.47) |
| agent session, follow-up turns | 14602 (14587-14611) at the last turn | see below | up to 64 | 3 | see below | 104.8 (84.8-117.6) | 4.21 (4.08-4.23) |

Ranges are the lowest and highest of the runs; `Runs` counts requests that returned a token.

### Agent session (conversation cache)

Cache hit over the follow-up turns: 68.8 % (68.8-68.8); earlier-turn tokens read again per session: 4 (3-4) (earlier turns that the cache did not hold; the 13729 (13728-13731) new tokens of the files are read once); first turn (nothing cached) first token: 3.52 s (3.47-3.56).

| Turn (run 1) | Prompt tokens | Reused | Read | Prompt tok/s | First token (s) | Decode tok/s |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 0 | 609 | 0 | 609 | 176.4 | 3.47 | 68.5 |
| 1 | 3744 | 624 | 3120 | 748.1 | 4.193 | 102.0 |
| 2 | 5277 | 3807 | 1470 | 362.6 | 4.084 | 100.0 |
| 3 | 8721 | 5341 | 3380 | 806.2 | 4.225 | 91.6 |
| 4 | 11638 | 8776 | 2862 | 687.7 | 4.186 | 101.6 |
| 5 | 14587 | 11688 | 2899 | 694.4 | 4.21 | 84.8 |

Per-request data: `results.json`. Engine log lines from the start: `engine-log-excerpt.txt` (when this run started the server).

## Correctness and limitations

Not measured: this is a speed suite. The conversation uses the model's own replies, so token counts differ a little between runs. Machine details come from the server, `nvidia-smi`/`rocm-smi` and the OS; background load and power limits are not recorded. Total time of the suite: 187 s.

## Added by hand (what the tool could not read)

- GPU: RX 7900 XTX 24 GB (Sapphire Nitro+), AMD Adrenalin driver 32.0.31041.1004 (2026-08-17); the engine's bundled ROCm 10.2.0a20260930 (official prebuilt Windows HIP zip). A second card (RTX 5080) is installed but not used by this run.
- PCIe: Gen4 x8 (the board, an ASUS ProArt B850-Creator, runs both GPU slots at x8 with two cards installed).
- Tuning (Adrenalin, owner's settings): core 2,800 MHz, VRAM 2,800 MHz, 1,000 mV, power limit +15%. Not stock clocks.
- Storage: Samsung 980 PRO 1 TB NVMe (model files on it).
- Page file: 32-48 GB on the NVMe in addition to 4 GB on C:, commit limit 99 GB. It is needed for `--prefill auto:32768`: engine 0.1.44.1 warns that prompt chunks of 8K and more crashed RX 7900 XTX engines on Windows through a commit-charge jump (#1630). With the large page file nothing crashed.

### Settings kept (changed from setup's defaults)

These are the settings this run used, chosen for this machine:

| Setting | What it does here |
| --- | --- |
| `--prefill auto:32768` | reads a prompt in up to 32K-token chunks, so the experts outside VRAM cross the PCIe link fewer times (needs the page file above) |
| `STRATA_PF_FUSED=1`, `STRATA_PF_GEMM=1`, `STRATA_PF_SWITCH_MIN_T=4096` | the fused prompt kernels on gfx1100 |
| `--pcie-frac 0` | missed experts are computed by the CPU instead of read over the x8 link |
| `STRATA_ROUTE_TAIL_SKIP=7` | skips missed experts every token of a verify window ranks 7th or lower (off by default on RDNA3; answers differ slightly) |
| `--max-context 262144` | the model's full window, KV streaming with 32,768 tokens in VRAM |

Related on this site

Quick links to related pages.