Compare · Cited llama.cpp + AMD docs · measured 35B Vulkan cells only
llama.cpp on Radeon: Vulkan vs ROCm (HIP)
Shoppers search “llama.cpp vulkan vs rocm” and “which backend for AMD GPU.” On AMDai the house daily driver is Qwen3.6-35B-A3B Unsloth UD-Q5_K_XL on one R9700, llama.cpp Vulkan, 262144 context, f16 KV, 0% RAM offload. That is a Vulkan build. HIP is the ROCm compile when rocminfo already lists this gfx. Measured decode is the official local desktop Vulkan sweep. HIP cells stay pending — not measured on the local desktop. Quant ladder is Q6_K / UD-Q5_K_XL / Q5_K_M / Q4_K_M plus UD-Q3_K_XL as a labeled estimate (Hugging Face listing for Qwen3.6-35B-A3B-UD-Q3_K_XL.gguf (16.8 GB)). Q1/Q2 stay off. llama.cpp first.
- Compare hub
- llama.cpp
- ROCm
- Vulkan vs HIP
- First-run setup
- R9700
- Benchmarks
- Dual / multi-GPU
- Stack Lab
- amdai-bench
- Flash Attention
How we test — Measured cells cite official amdai-bench/run@1 cards. Estimates stay labeled. Q3 is estimate-only. Q1/Q2 stay off.
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
Decision box
Longer ROCm-guide version: /rocm/vulkan-hip. Glossary: Vulkan · HIP.
Install, speed, split, flags
HIP speed cells stay pending — not measured on the local desktop. Q6 / Q5 / Q4 first. UD-Q3_K_XL is a labeled estimate.
-
Install effort
cited
- Vulkan
- Mesa RADV (or the vendor ICD on Windows) plus libvulkan-dev. cmake -B build-vk -DGGML_VULKAN=ON. No matching /opt/rocm tree required for first tokens. Cited from llama.cpp build.md and this site’s /setup path.
- ROCm / HIP
- Full ROCm userspace, then rocminfo must list this gfx before you compile. cmake -B build-hip -DGGML_HIP=ON -DAMDGPU_TARGETS=<gfx>. Prefix may be /opt/rocm/core-10.0 — ls first. Official matrix: AMD ROCm 10.1.0.
-
Decode vs prefill
pending
- Vulkan
- Measured on the local desktop llama.cpp Vulkan only. Official overnight 35B decode cells live in the table below and on /benchmarks. Those are Vulkan cards, not a HIP verdict. Prefill appears on some Vulkan cards in that same sweep — still not a HIP number.
- ROCm / HIP
- HIP decode and prefill for the house 35B sweep stay pending — not measured on the local desktop. Do not copy a community HIP tok/s onto this page. Measure with amdai-bench.
-
Multi-GPU
cited
- Vulkan
- Cited walk is /setup/multi-gpu: --list-devices, then --device or GGML_VK_VISIBLE_DEVICES. Official default --split-mode layer. Overnight 35B split cards are llama.cpp Vulkan. Combo-preset tok/s is not measured.
- ROCm / HIP
- HIP_VISIBLE_DEVICES / ROCR_VISIBLE_DEVICES after rocminfo. Same llama.cpp --split-mode flags. HIP split of the house 35B is pending — not measured on the local desktop. Mixing RDNA gens stays a /multi-gpu question.
-
Flash attention and KV type
cited
- Vulkan
- Overnight 35B llama-bench cards recorded -fa 1 and -ctk f16 -ctv f16. That is the house Vulkan pin. llama-server flags are not on that card — copy -fa only when your build documents it. The shopper page is /flash-attention. q8_0 KV is listed on the calculator; quality and tok/s stay not measured yet.
- ROCm / HIP
- llama.cpp documents the same --cache-type-k/v and -fa flags on the HIP build. HIP -fa / q8_0 KV for the house 35B sweep stay pending — not measured on the local desktop. Do not invent a HIP flash-attn delta. Shopper page: /flash-attention.
-
Windows / WSL
cited
- Vulkan
- Native Windows first token is llama.cpp Vulkan (LunarG SDK, GGML_VULKAN=ON, or a Windows x64 Vulkan release). Cited at /setup/windows. Not measured on the local desktop.
- ROCm / HIP
- ROCm 10.1 lists WSL2 as a tech preview. llama.cpp’s documented GPU path in a Linux guest is HIP (GGML_HIP=ON). We do not invent Vulkan-in-WSL. Native Linux at /setup stays the measured path. Cited at /setup/wsl.
Supported GPUs
Official HIP follows the ROCm 10.1 matrix. Vulkan is the always-works consumer path. gfx1031 HSA_OVERRIDE stays unofficial.
-
RDNA 4
gfx1201 / gfx1200
- Vulkan
- Always-works consumer path. House R9700 (gfx1201) daily driver is Vulkan.
- ROCm / HIP
- Official on the ROCm 10.1 matrix. Compile only after rocminfo prints this gfx. hipErrorNoBinaryForGpu means the binary missed gfx1201.
Radeon AI PRO R9700 is the measured 32 GB SKU. RX 9070-class is gfx1201 / gfx1200 — Vulkan first, HIP second.
-
RDNA 3
gfx110x
- Vulkan
- Always-works consumer path. Mesa RADV + GGML_VULKAN=ON.
- ROCm / HIP
- Official on the ROCm 10.1 matrix for listed gfx1100 / gfx1101 / gfx1102 rows. Pin AMDGPU_TARGETS to the string rocminfo prints. Do not paste gfx1201 onto a 7900.
Decode on these cards is not a local desktop 35B HIP card. Size Q6/Q5/Q4 on the calculator.
-
RDNA 2
gfx1030 / gfx1031
- Vulkan
- Always-works path on used 6000-series. Prefer Vulkan if HIP is angry.
- ROCm / HIP
- Consumer RDNA 2 is unofficial on the current Radeon ROCm row the way W6800 (gfx1030) is official. gfx1031 is not that W6800 row. Community HSA_OVERRIDE_GFX_VERSION=10.3.0 is unofficial — not an AMD how-to.
House 35B Q6/Q5/Q4 files expect RAM offload on 12–16 GB cards. Both RAM lines stay labeled estimate.
Measured on the local desktop
Official llama.cpp Vulkan cells from existing run cards. The HIP column stays pending — not measured on the local desktop until a first-party card lands. UD-Q3_K_XL is a labeled estimate. Full matrix: /benchmarks.
| Quant | Kind | Vulkan 4K | Vulkan 32K | HIP | Note |
|---|---|---|---|---|---|
| Q6_K | Measured Vulkan | 103.23 tok/s | 71.19 tok/s | pending — not measured on the local desktop |
Official local desktop llama.cpp Vulkan, one R9700. HIP column pending.
local-desktop-20261012-2355-35b-q6k-1gpu-4k-llamacpp-f16local-desktop-20261012-2356-35b-q6k-1gpu-32k-llamacpp-f16 |
| UD-Q5_K_XL | Measured Vulkan | 102.39 tok/s | 90.52 tok/s | pending — not measured on the local desktop |
Official local desktop llama.cpp Vulkan, one R9700. HIP column pending.
local-desktop-20261012-2311-35b-udq5kxl-1gpu-4k-llamacpp-f16local-desktop-20261012-2312-35b-udq5kxl-1gpu-32k-llamacpp-f16 |
| Q5_K_M | Measured Vulkan | 109.73 tok/s | 96.21 tok/s | pending — not measured on the local desktop |
Official local desktop llama.cpp Vulkan, one R9700. HIP column pending.
local-desktop-20261012-2327-35b-q5km-1gpu-4k-llamacpp-f16local-desktop-20261012-2327-35b-q5km-1gpu-32k-llamacpp-f16 |
| Q4_K_M | Measured Vulkan | 117.69 tok/s | 101.88 tok/s | pending — not measured on the local desktop |
Official local desktop llama.cpp Vulkan, one R9700. HIP column pending.
local-desktop-20261012-2341-35b-q4km-1gpu-4k-llamacpp-f16local-desktop-20261012-2342-35b-q4km-1gpu-32k-llamacpp-f16 |
| UD-Q3_K_XL | Q3 estimate | not measured yet | not measured yet | not measured yet | Hugging Face listing for Qwen3.6-35B-A3B-UD-Q3_K_XL.gguf (16.8 GB). Q3 is a labeled estimate — not a local desktop run. |
Build and run — llama.cpp first
Flags come from llama.cpp build.md and the house 35B recipe. HIP run flags match Vulkan; that is not a measured HIP card.
Vulkan compile
# Vulkan — house daily-driver compile (llama.cpp build.md) sudo apt install -y build-essential cmake git libvulkan-dev git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build-vk -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release cmake --build build-vk -j"$(nproc)" ./build-vk/bin/llama-cli --list-devices # Pick RADV GFX1201 / the discrete card, not the iGPU.
HIP compile
# HIP sibling — only after rocminfo lists this gfx (llama.cpp build.md) cmake -B build-hip -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1201 -DCMAKE_BUILD_TYPE=Release cmake --build build-hip -j"$(nproc)" # Prefix may be /opt/rocm/core-10.0 — ls first. export HIP_PATH=/opt/rocm export PATH="/opt/rocm/bin:$PATH" ./build-hip/bin/llama-cli --list-devices
House Vulkan serve
# House 35B shape — /recipes/qwen36-35b.llamacpp-vulkan.262k ./build-vk/bin/llama-server \ -m ~/models/Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf \ -ngl 99 \ -c 262144 \ --cache-type-k f16 \ --cache-type-v f16 \ --host 127.0.0.1 --port 8080
HIP serve (same flags, unmeasured)
# Same GGUF flags as the Vulkan house pin — HIP binary, not a measured HIP card. ./build-hip/bin/llama-server \ -m ~/models/Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf \ -ngl 99 \ -c 262144 \ --cache-type-k f16 \ --cache-type-v f16 \ --host 127.0.0.1 --port 8080
Walkthrough: Run a local Qwen · llama.cpp backend · HIP no binary.
System RAM
Backend choice does not change the shopper RAM labels. House 35B UD-Q5_K_XL on one 32 GB R9700 does not offload. When -ngl leaves layers on the host — typical on a 16 GB card with a house 35B Q4–Q6 file — print Minimum system RAM needed (full system estimate: offloaded weights + OS / cache / headroom, rounded up to a real kit, labeled estimate until measured) and RAM needed at full context (262K with cache; measured numbers only when a card exists).
House 35B · in-VRAM on one R9700
Minimum system RAM needed
42.9 GB
Measured · 42.9 GiB raw · 256K context
local-desktop-20261012-2314-35b-udq5kxl-1gpu-256k-llamacpp-f16
RAM needed at full context
42.9 GB
Measured · 42.9 GiB raw · 256K full context
local-desktop-20261012-2314-35b-udq5kxl-1gpu-256k-llamacpp-f16
Measured peak system RAM on the local desktop: 42.9 GB (Linux GiB labeled GB). Measured, pending re-verify after RAM fix.
Breakdown
- Offloaded weights ·
- 0 GiB
- Separable embed in RAM ·
- 0 GiB
- KV in RAM at selected ·
- 0 GiB
- KV in RAM at full context ·
- 0 GiB
- Runtime / backend ·
- 0.85 GiB
- OS / desktop baseline ·
- 8.00 GiB
- Headroom ·
- 16.0 GiB
Offload example · 16 GB + 35B Q4
Minimum system RAM needed and RAM needed at full context for house 35B Q4_K_M on a 16 GB RX 7800 XT. Estimate. Backend (Vulkan or HIP) does not change the kit math.
Minimum system RAM needed
32 GB kit
Estimate · 29.2 GiB raw · 32K context
RAM needed at full context
48 GB kit
Estimate · 33.6 GiB raw · 256K full context
Estimate. Offloaded weights + KV in RAM + runtime + OS/desktop + headroom, rounded up to a 32 GB DIMM kit.
Breakdown
- Offloaded weights ·
- 3.76 GiB
- Separable embed in RAM ·
- 0 GiB
- KV in RAM at selected ·
- 0.69 GiB
- KV in RAM at full context ·
- 5.06 GiB
- Runtime / backend ·
- 0.71 GiB
- OS / desktop baseline ·
- 8.00 GiB
- Headroom ·
- 16.0 GiB
Measure it on your card
Stack Lab planner is the allowlisted backend A/B. Record an amdai-bench card on your box — Vulkan build-vk versus HIP build-hip, one knob at a time. The house daily recipe is the measured Vulkan pin. There is no invented HIP recipe id. HIP cells on this page stay pending until a first-party local desktop card lands.
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
If the app is not installed, packages are not published yet. There is no public download URL. Read the Stack Lab install notes . If Stack Lab is already running on this machine, open the local app .
FAQ
- Which llama.cpp backend should I compile first on a Radeon?
- Vulkan. House daily driver is Qwen3.6-35B-A3B UD-Q5_K_XL on one R9700, llama.cpp Vulkan, 262K, f16 KV. HIP is the second compile after rocminfo lists this gfx. Do not pick HIP to chase an unmeasured tok/s.
- First-run setup · llama.cpp · Vulkan vs HIP guide
- Is HIP faster than Vulkan on RDNA 4?
- HIP decode and prefill for the house 35B sweep stay pending — not measured on the local desktop. Measured numbers on this site are Vulkan. Measure both builds with Stack Lab planner and amdai-bench. Do not copy a community HIP figure onto a shopper page.
- Stack Lab · amdai-bench · Benchmarks
- My used 6700 XT is gfx1031. Do I need HSA_OVERRIDE?
- Not as an AMDai how-to. Consumer RDNA 2 is unofficial on the current Radeon ROCm row. gfx1031 is not the official W6800 gfx1030 row. Community HSA_OVERRIDE_GFX_VERSION=10.3.0 is unofficial. Prefer llama.cpp Vulkan. Q6/Q5/Q4 plus a labeled Q3 estimate. Both RAM lines print if the 35B file spills.
- gfx1031 HSA_OVERRIDE · Buying a used Radeon · RX 6700 XT
Sources
AMDai Lab Notes digest
Email only — no account. Double opt-in. About once a week, and only when run cards, guides, ROCm problems, or Stack Lab actually changed. Not a daily drip. Issues may include one labeled Sponsored mention. Slots and rates: Sponsor.