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.

How we test — Measured cells cite official amdai-bench/run@1 cards. Estimates stay labeled. Q3 is estimate-only. Q1/Q2 stay off.

Open in Stack Lab

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 .

Open in Stack Lab

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 .

Open in Stack Lab

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.

Qwen3.6-35B-A3B Vulkan vs HIP on one R9700
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.

Open in Stack Lab

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 .

Open in Stack Lab

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 .

Open in Stack Lab

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

Also: Compare · Setup · FAQ

Next steps

Real pages on this site. We do not invent a next click.

Last updated

esc

Type to filter. Enter opens the first match. Full-text search lives on /search.