llama.cpp on Vulkan with Intel's flash-attention prefill kernel and a speculative draft model. Claude Code and Codex run fully local on a 24GB Intel Arc card. Raw logs, versions and caveats are published; the few figures without a log are marked.
‡ 42.3 tok/s is eval-suite throughput: generated tokens divided by total wall-clock across the 8 eval requests (7 coding tasks and 1 web page), prompt processing and HTTP included. The per-request server decode speeds in the same run average 53.3 tok/s (range 47–58). We quote 42.3 as the conservative headline. 16.0 tok/s is llama-bench tg32 with no drafter, a different measurement. All speed figures are single runs unless noted.
† Observed before logging was in place; the raw log was not retained and a re-run is planned. 55–57 s: 54.9 s on the first Intel FA build, 56.7 s on the final tuned configuration (57,344 context). 64K is the configured maximum; the logged runs loaded 61,440 and 57,344 tokens.
One Intel Arc Pro B60 24GB, Qwen3.8-27B Q4_K_M, llama.cpp on Vulkan (upstream b11524 plus Intel's two FA prefill commits). Versions and flags: README, Versions used.
| Measure | Stock llama.cpp Vulkan | arc-llm-lab | Raw data |
|---|---|---|---|
| Generation speed | 16.0 tok/s ‡ (no draft model, llama-bench tg32) | 42.3 tok/s (DFlash2 draft model, n=7; eval-suite throughput, wall-clock, prompt processing included; per-request decode 47–58, mean 53.3) ‡ | tune.txt, compare-f16.txt |
| Prompt reading at 32K context | 118 tok/s | 420 tok/s (f16 KV cache only) | compare-f16.txt |
| 3 agent turns at 30–37K | 201 s† | 55–57 s | server-test.txt, bench-history.csv |
| 100-task hidden-checker agent eval, 32K window | n/a | 97/100 (Claude Code @32K, single run, 95% CI 91.5–99%), 1.54 completed tasks/min | RELIABILITY.md |
Only the Arc Pro B60 row is measured. The rest are specifications and arithmetic: “fits” is an ESTIMATE for a 16.46 GB Qwen3.8-27B Q4_K_M weights file plus its drafter, buffers and a 32K f16 KV cache (about 2 GiB), roughly 21 GB in all. Rule of thumb for other models: the GGUF file should be no larger than your VRAM minus about 3 GiB.
| Card | VRAM | Bandwidth | AU price (dated) | 27B Q4 + 32K context fits? | Measured |
|---|---|---|---|---|---|
| Arc B570 | 10 GB | 380 GB/s | no sourced price | no (ESTIMATE) | not measured |
| Arc B580 | 12 GB | 456 GB/s | A$419 (2026-10-07) | no (ESTIMATE) | not measured |
| Arc Pro B50 | 16 GB | 224 GB/s | no sourced price | no (ESTIMATE) | not measured |
| Arc A770 16GB | 16 GB | 560 GB/s | A$540 (2026-09-30) | no (ESTIMATE) | not measured |
| Arc Pro B60 | 24 GB | 456 GB/s | A$1240 (2026-10-07) | yes (measured) | 16.0 tok/s, 42.3 with the draft model |
| Arc Pro B70 | 32 GB | 608 GB/s | no sourced price | yes (ESTIMATE) | not measured |
Specs are from the sources named in gpu-comparison-notes.md; prices are Australian street prices on the stated dates. A passive B60 listing (A$999 including GST, PCCaseGear, 2026-10-10) needs strong case airflow.
The same code, replayed at two measured generation speeds on the same card and model. 16.0 tok/s is llama-bench tg32 with no draft model; 42.3 tok/s is eval-suite throughput (generated tokens over total wall-clock, prompt processing included) with the DFlash2 draft model; per-request decode ran 47 to 58 tok/s, mean 53.3.
Prompt processing speed (llama-bench pp2048) as the conversation grows. Hover or tab to a point for values.
Swipe sideways to see the whole chart.
DFlash2 draft model at different draft lengths. Every setting kept 7/7 coding and 3/3 tool-call quality. n=15 left 0.96 GiB of VRAM free and fell to 27 tok/s (cause not isolated).
Swipe sideways to see the whole chart.
Raw: tune.txt
First: price against VRAM, using Australian street prices from the sources shown (cards without a reliable AUD price aren't plotted). Second: each card's no-drafter generation ceiling (memory bandwidth ÷ 16.46 GB of weights), an estimate, against what the B60 actually measured.
Swipe sideways to see the whole chart.
Swipe sideways to see the whole chart.
Method: gpu-comparison-notes.md. Spec sources are named per card in the CSV (mostly the TechPowerUp GPU database).
Numbers from real Intel GPUs, measured with llama-bench by one script. Self-reported unless the notes say otherwise. Add your card or see what we most want to see.
| GPU | Backend / build | Patches | Model | Depths | pp (tok/s) | tg (tok/s) | Driver / OS | By |
|---|---|---|---|---|---|---|---|---|
| Intel Arc Pro B60 24GB log | Vulkan b11524 (86a283532) | none | Qwen3.8-27B-UD-Q4_K_M.gguf (KV f16/f16) | empty / 16K / 32K | 589 / 198 / 118 | 16.01 / 15.14 / 14.45 | 32.0.101.8976, Windows 11 | Elie Dagher |
| Intel Arc Pro B60 24GB log | Vulkan b11526 (c85e6c598) | 2 | Qwen3.8-27B-UD-Q4_K_M.gguf (KV f16/f16) | empty / 16K / 32K | 653 / 513 / 420 | 16.05 / 15.20 / 14.46 | 32.0.101.8976, Windows 11 | Elie Dagher |
pp is prompt processing of 2048 tokens and tg is generation of 32 tokens, in tokens per second, at the stated context depths. No speculative decoding. Full table with notes: COMMUNITY-RESULTS.md.
23.88 GiB usable. This is the budget for a 64K load; the logged runs loaded 61,440 and 57,344 tokens. The governor aims to keep 1.35 GiB or more free as a precaution.
Swipe sideways to see the whole chart.
Coding, debugging, tool use, file operations, long-context retrieval, business maths and error recovery, each scored by hidden checkers. The headline metric is completed tasks per minute.
Swipe sideways to see the whole chart.