llama-bench 7900XTX

#1
by vernaut - opened

Hi, I saw your reddit thread requesting bench results from a 7900XTX. I have the hardware but I am a newbie at running the bench!

I've been running llama-server in a container using the vulkan backend. I reworked my deployment to use the full llama image so I can run the bench now. Can you tell me which flags to use? I can also run it with rocm backend of course.

Here's some output with the default flags, I guess. I will also say anecdotally it seems to be about 10% faster than the UD-Q4_K_XL quant I was using earlier (woops):

root@c1176d1ebd45:/app# ./llama-bench -m /models/Qwen3.5-35B-A3B-Q4_0.gguf -ngl 99 > /tmp/bench.txt
ggml_vulkan: Found 1 Vulkan devices:
ggml_vulkan: 0 = AMD Radeon RX 7900 XTX (RADV NAVI31) (radv) | uma: 0 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 65536 | int dot: 1 | matrix cores: KHR_coopmat
load_backend: loaded Vulkan backend from /app/libggml-vulkan.so
load_backend: loaded CPU backend from /app/libggml-cpu-zen4.so
root@c1176d1ebd45:/app# cat /tmp/bench.txt

model size params backend ngl test t/s
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 pp512 2104.92 ± 23.25
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 tg128 104.79 ± 0.47

@vernaut

Sweeeet! Thanks for taking a look! Those are definitely usable numbers for local vibe coding!

I'll be honest, I've only benchmarked Vulkan/ROCm a couple times a while back when I had access to a 7900XTX 24GB like yours. iirc there are different models with different max power configurations as well, but I forget the equivalent of nvidia-smi to show that info.

There are also maybe two Vulkan backends to compile against e.g. (RADV NAVI31) and the other one? If no one else chimes in, I'll have to look for my notes tomorrow.

Are you compiling everything yourself, or is it all pre-built in the docker image?

If you are compiling it yourself, I have a branch of mainline llama.cpp with llama-sweep-bench that can show the speed across the entire context length to see how fast it drops off. Here is that branch: https://github.com/ubergarm/llama.cpp/tree/ug/port-sweep-bench

Anyway, it looks promising at first glance, thanks for some hard data that is encouraging!

Totally, very useable. I'm a bit new to this stuff, had sort of written off LLMs but got exposed to Roo Code at work (SWE) a few weeks ago and it really impressed me, so now I'm on a bit of an enthusiast kick haha, especially because I already had a suitable system for it.

rocm-smi is the equivalent. I've got one of these:

$ rocm-smi
======================================= ROCm System Management Interface =======================================
================================================= Concise Info =================================================
Device  Node  IDs              Temp    Power  Partitions          SCLK  MCLK   Fan  Perf  PwrCap  VRAM%  GPU%
              (DID,     GUID)  (Edge)  (Avg)  (Mem, Compute, ID)
================================================================================================================
0       1     0x744c,   22753  43.0°C  9.0W   N/A, N/A, 0         0Mhz  96Mhz  0%   auto  350.0W  3%     0%
================================================================================================================
============================================= End of ROCm SMI Log ==============================================

Right now I'm letting it cap out at the default 350W but I can limit it lower with LACT if that's of any interest.

I'm using the pre-built container images from mainline llama.cpp, but I'll look into compiling and running your branch tomorrow 👍 I took a quick look through the build notes here but I don't see anything specific to RADV/NAVI31 in that Vulkan section. For now I'll plan to use the steps there but let me know if there's a better approach.

@vernaut

Wow you're doing great, even using LACT that is amazing! Keep up the good work! (In my most recent talk I cover LACT from the Linux/CUDA side: https://blog.aifoundry.org/p/adventures-in-model-quantization )

There is an official Vulkan benchmark thread and I see Occ4m (a vulkan dev for llama.cpp) active recently on there: https://github.com/ggml-org/llama.cpp/discussions/10879

I'll go benchmark this quant on my 3090TI FE 450W (tuned with LACT) now and see how it fares. I've heard this model is may be faster on your GPU! 🤞 I'll be happy and sad if that is true! lol

Okay, I am running ik_llama.cpp so a few arguments are different. On CUDA I can inflate the PP speed by increasing batch sizes, but I don't think that works on vulkan. (it does take more VRAM so can't run as much context). its all tradeoffs hah...

sweep-bench-Qwen3.5-35B-A3B-3090TI

👈 Logs and Commands

default batches (-ub 512 -b 2048)

#!/usr/bin/env bash
model=/models/ubergarm/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-Q4_0.gguf
./build/bin/llama-sweep-bench \
  --model "$model" \
  -c 98816 \
  --n-predict 128 \
  -ger \
  --merge-qkv \
  -ngl 99 \
  --threads 1 \
  --warmup-batch
PP TG N_KV T_PP s S_PP t/s T_TG s S_TG t/s
512 128 0 0.174 2936.00 1.193 107.29
512 128 512 0.172 2978.06 1.170 109.40
512 128 1024 0.172 2975.15 1.164 109.93
512 128 1536 0.177 2900.77 1.168 109.58
512 128 2048 0.176 2914.49 1.166 109.76
512 128 2560 0.177 2890.83 1.169 109.52
512 128 3072 0.177 2899.65 1.169 109.46
512 128 3584 0.178 2884.00 1.170 109.36
512 128 4096 0.179 2867.25 1.172 109.26
512 128 4608 0.178 2873.43 1.173 109.09
512 128 5120 0.179 2853.29 1.175 108.92
512 128 5632 0.181 2823.75 1.176 108.87
512 128 6144 0.182 2806.13 1.176 108.84
512 128 6656 0.183 2798.10 1.178 108.62
512 128 7168 0.183 2795.26 1.178 108.62
512 128 7680 0.183 2793.95 1.182 108.32
512 128 8192 0.184 2784.21 1.184 108.10
512 128 8704 0.185 2762.43 1.187 107.80
512 128 9216 0.186 2754.01 1.190 107.53
512 128 9728 0.185 2768.54 1.191 107.44
512 128 10240 0.186 2750.38 1.196 107.02
512 128 10752 0.188 2724.69 1.211 105.68
512 128 11264 0.189 2707.98 1.214 105.45
512 128 11776 0.188 2717.85 1.214 105.48
512 128 12288 0.190 2700.91 1.215 105.37
512 128 12800 0.190 2696.82 1.214 105.41
512 128 13312 0.191 2676.28 1.214 105.41
512 128 13824 0.192 2665.08 1.215 105.38
512 128 14336 0.191 2676.61 1.215 105.35
512 128 14848 0.193 2657.19 1.215 105.31
512 128 15360 0.194 2634.88 1.216 105.22
512 128 15872 0.195 2623.21 1.219 104.97
512 128 16384 0.194 2645.57 1.216 105.23
512 128 16896 0.195 2625.26 1.217 105.19
512 128 17408 0.197 2603.07 1.218 105.13
512 128 17920 0.197 2594.68 1.218 105.06
512 128 18432 0.196 2608.57 1.219 104.97
512 128 18944 0.197 2595.38 1.221 104.81
512 128 19456 0.198 2587.47 1.223 104.70
512 128 19968 0.199 2576.27 1.225 104.51
512 128 20480 0.199 2567.30 1.226 104.43
512 128 20992 0.201 2550.50 1.227 104.31
512 128 21504 0.201 2547.58 1.239 103.31
512 128 22016 0.203 2525.80 1.244 102.91
512 128 22528 0.204 2513.44 1.244 102.86
512 128 23040 0.204 2513.12 1.246 102.73
512 128 23552 0.204 2513.52 1.244 102.91
512 128 24064 0.205 2497.05 1.245 102.85
512 128 24576 0.204 2503.97 1.242 103.09
512 128 25088 0.206 2489.41 1.243 103.01
512 128 25600 0.206 2479.72 1.241 103.11
512 128 26112 0.207 2469.62 1.243 102.96
512 128 26624 0.207 2475.58 1.246 102.72
512 128 27136 0.208 2455.98 1.245 102.81
512 128 27648 0.209 2454.05 1.245 102.84
512 128 28160 0.210 2442.36 1.247 102.64
512 128 28672 0.212 2418.16 1.246 102.73
512 128 29184 0.211 2427.28 1.248 102.53
512 128 29696 0.212 2418.51 1.248 102.53
512 128 30208 0.212 2419.07 1.250 102.41
512 128 30720 0.213 2407.89 1.250 102.39
512 128 31232 0.212 2410.92 1.253 102.18
512 128 31744 0.214 2396.97 1.256 101.91
512 128 32256 0.215 2379.81 1.269 100.83
512 128 32768 0.215 2381.68 1.273 100.58
512 128 33280 0.215 2384.12 1.273 100.56
512 128 33792 0.216 2372.90 1.274 100.46
512 128 34304 0.218 2350.38 1.275 100.41
512 128 34816 0.217 2364.12 1.275 100.41
512 128 35328 0.218 2345.98 1.274 100.44
512 128 35840 0.219 2341.59 1.274 100.51
512 128 36352 0.219 2334.62 1.276 100.34
512 128 36864 0.220 2325.55 1.275 100.41
512 128 37376 0.221 2320.74 1.278 100.13
512 128 37888 0.220 2326.55 1.275 100.37
512 128 38400 0.222 2306.58 1.278 100.18
512 128 38912 0.222 2305.20 1.277 100.21
512 128 39424 0.223 2300.19 1.278 100.15
512 128 39936 0.224 2288.28 1.278 100.17
512 128 40448 0.224 2282.99 1.281 99.89
512 128 40960 0.225 2279.36 1.281 99.91
512 128 41472 0.226 2267.83 1.284 99.72
512 128 41984 0.227 2253.10 1.283 99.73
512 128 42496 0.227 2252.03 1.285 99.64
512 128 43008 0.227 2255.51 1.298 98.63
512 128 43520 0.229 2236.28 1.304 98.15
512 128 44032 0.229 2231.85 1.305 98.11
512 128 44544 0.230 2229.91 1.307 97.96
512 128 45056 0.230 2226.16 1.306 98.02
512 128 45568 0.231 2213.97 1.306 98.03
512 128 46080 0.233 2199.33 1.306 97.98
512 128 46592 0.232 2209.53 1.306 98.01
512 128 47104 0.233 2197.03 1.306 97.99
512 128 47616 0.234 2188.17 1.308 97.82
512 128 48128 0.234 2189.37 1.309 97.77
512 128 48640 0.234 2190.24 1.306 97.98
512 128 49152 0.236 2167.81 1.307 97.94
512 128 49664 0.236 2172.29 1.309 97.77
512 128 50176 0.237 2159.85 1.310 97.73
512 128 50688 0.239 2141.53 1.311 97.60
512 128 51200 0.238 2151.55 1.311 97.63
512 128 51712 0.240 2136.59 1.313 97.47
512 128 52224 0.238 2149.40 1.314 97.43
512 128 52736 0.240 2135.31 1.315 97.33
512 128 53248 0.240 2132.65 1.314 97.42
512 128 53760 0.241 2122.75 1.327 96.49
512 128 54272 0.242 2113.30 1.333 96.03
512 128 54784 0.243 2109.95 1.333 96.03
512 128 55296 0.244 2099.63 1.333 96.06
512 128 55808 0.243 2108.25 1.334 95.96
512 128 56320 0.244 2096.52 1.335 95.91
512 128 56832 0.245 2086.57 1.337 95.77
512 128 57344 0.245 2091.17 1.336 95.81
512 128 57856 0.246 2083.07 1.337 95.76
512 128 58368 0.246 2082.30 1.338 95.66
512 128 58880 0.246 2077.39 1.341 95.46
512 128 59392 0.247 2069.54 1.339 95.62
512 128 59904 0.247 2073.38 1.340 95.53
512 128 60416 0.249 2059.34 1.340 95.55
512 128 60928 0.250 2050.26 1.343 95.34
512 128 61440 0.252 2035.36 1.343 95.29
512 128 61952 0.252 2034.27 1.343 95.30
512 128 62464 0.252 2034.20 1.345 95.19
512 128 62976 0.253 2026.64 1.347 95.02
512 128 63488 0.253 2025.28 1.347 95.00
512 128 64000 0.253 2021.48 1.350 94.79
512 128 64512 0.253 2023.06 1.359 94.16
512 128 65024 0.254 2018.31 1.365 93.79
512 128 65536 0.255 2010.00 1.364 93.86
512 128 66048 0.255 2005.91 1.366 93.70
512 128 66560 0.258 1985.67 1.364 93.85
512 128 67072 0.257 1989.40 1.366 93.70
512 128 67584 0.259 1975.02 1.367 93.64
512 128 68096 0.258 1981.90 1.367 93.62
512 128 68608 0.259 1978.90 1.368 93.54
512 128 69120 0.260 1968.30 1.370 93.43
512 128 69632 0.260 1969.75 1.372 93.28
512 128 70144 0.261 1964.11 1.369 93.50
512 128 70656 0.262 1955.85 1.370 93.42
512 128 71168 0.262 1957.91 1.371 93.34
512 128 71680 0.264 1937.62 1.372 93.27
512 128 72192 0.264 1938.03 1.373 93.22
512 128 72704 0.264 1941.02 1.374 93.14
512 128 73216 0.266 1925.88 1.376 93.04
512 128 73728 0.265 1929.55 1.376 93.02
512 128 74240 0.266 1925.61 1.379 92.83
512 128 74752 0.266 1923.06 1.379 92.84
512 128 75264 0.266 1924.26 1.388 92.25
512 128 75776 0.267 1916.84 1.396 91.71
512 128 76288 0.268 1912.85 1.394 91.81
512 128 76800 0.270 1893.33 1.398 91.58
512 128 77312 0.271 1892.38 1.398 91.57
512 128 77824 0.271 1890.14 1.397 91.61
512 128 78336 0.270 1894.69 1.398 91.54
512 128 78848 0.272 1879.97 1.398 91.58
512 128 79360 0.272 1881.99 1.398 91.54
512 128 79872 0.273 1875.89 1.399 91.46
512 128 80384 0.273 1872.88 1.403 91.26
512 128 80896 0.273 1876.07 1.401 91.39
512 128 81408 0.274 1869.01 1.402 91.28
512 128 81920 0.276 1851.81 1.403 91.22
512 128 82432 0.277 1847.06 1.403 91.21
512 128 82944 0.279 1834.21 1.404 91.19
512 128 83456 0.277 1850.88 1.407 90.96
512 128 83968 0.278 1839.01 1.409 90.84
512 128 84480 0.277 1845.76 1.409 90.87
512 128 84992 0.281 1824.47 1.408 90.88
512 128 85504 0.281 1822.07 1.410 90.77
512 128 86016 0.280 1826.77 1.419 90.21
512 128 86528 0.282 1812.53 1.427 89.70
512 128 87040 0.282 1814.56 1.427 89.68
512 128 87552 0.281 1821.73 1.429 89.59
512 128 88064 0.283 1811.06 1.428 89.60
512 128 88576 0.283 1809.21 1.428 89.64
512 128 89088 0.284 1804.11 1.427 89.70
512 128 89600 0.285 1796.31 1.428 89.61
512 128 90112 0.285 1794.43 1.429 89.59
512 128 90624 0.287 1786.69 1.431 89.45
512 128 91136 0.285 1794.44 1.433 89.31
512 128 91648 0.286 1792.13 1.432 89.40
512 128 92160 0.288 1780.38 1.432 89.39
512 128 92672 0.287 1781.72 1.434 89.29
512 128 93184 0.289 1769.00 1.433 89.30
512 128 93696 0.291 1760.04 1.436 89.16
512 128 94208 0.292 1755.96 1.436 89.15
512 128 94720 0.291 1756.82 1.439 88.97
512 128 95232 0.290 1763.12 1.437 89.05
512 128 95744 0.292 1753.33 1.438 89.01
512 128 96256 0.294 1742.83 1.443 88.70
512 128 96768 0.295 1736.30 1.449 88.35
512 128 97280 0.294 1739.55 1.457 87.83
512 128 97792 0.296 1730.10 1.457 87.85
512 128 98304 0.296 1731.85 1.460 87.69

-ub 2048 -b 2048

#!/usr/bin/env bash
model=/models/ubergarm/Qwen3.5-35B-A3B-GGUF/Qwen3.5-35B-A3B-Q4_0.gguf
./build/bin/llama-sweep-bench \
  --model "$model" \
  -c 36864 \
  --n-predict 128 \
  -ger \
  --merge-qkv \
  -ngl 99 \
  -ub 2048 -b 2048 \
  --threads 1 \
  --warmup-batch
PP TG N_KV T_PP s S_PP t/s T_TG s S_TG t/s
2048 128 0 0.520 3938.17 1.188 107.75
2048 128 2048 0.527 3888.98 1.171 109.33
2048 128 4096 0.535 3826.04 1.173 109.09
2048 128 6144 0.542 3780.14 1.174 108.99
2048 128 8192 0.551 3717.73 1.183 108.24
2048 128 10240 0.559 3664.62 1.193 107.29
2048 128 12288 0.568 3604.28 1.209 105.87
2048 128 14336 0.579 3539.66 1.209 105.84
2048 128 16384 0.587 3491.04 1.212 105.64
2048 128 18432 0.594 3446.04 1.216 105.23
2048 128 20480 0.603 3394.70 1.223 104.68
2048 128 22528 0.613 3340.21 1.237 103.44
2048 128 24576 0.623 3285.83 1.239 103.28
2048 128 26624 0.634 3228.28 1.244 102.93
2048 128 28672 0.644 3181.49 1.244 102.89
2048 128 30720 0.649 3156.60 1.248 102.54
2048 128 32768 0.660 3102.96 1.270 100.81
2048 128 34816 0.668 3063.68 1.272 100.60

Right on, appreciate the guidance! I think I'm doing something wrong, I can't get llama-sweep-bench to complete...

Here's what I did, basically:

  1. Cloned your repo
  2. Set up a debian-testing distrobox, downloaded the vulkan libs mentioned here
  3. Followed the build instructions from that same section
  4. I found I had to remove a few of the flags from your example (as expected) and landed on:
./build/bin/llama-sweep-bench --model "/home/jackson/.cache/llama.cpp/Qwen3.5-35B-A3B-Q4_0.gguf" -c 36864 --n-predict 128 -ngl 99 --threads 1

It runs very briefly but then I hit an error:

sched_reserve: reserve took 122.83 ms, sched copies = 1

main: n_kv_max = 36864, n_batch = 2048, n_ubatch = 512, flash_attn_type = -1, n_gpu_layers = 99, n_threads = 1, n_threads_batch = 1

|    PP |     TG |   N_KV |   T_PP s | S_PP t/s |   T_TG s | S_TG t/s |
|-------|--------|--------|----------|----------|----------|----------|
|   512 |    128 |      0 |    0.269 |  1905.75 |    1.341 |    95.43 |
init: the tokens of sequence 0 in the input batch have inconsistent sequence positions:
 - the last position stored in the memory module of the context (i.e. the KV cache) for sequence 0 is X = 639
 - the tokens for sequence 0 in the input batch have a starting position of Y = 512
 for M-RoPE, it is required that the position satisfies: X < Y
decode: failed to initialize batch
llama_decode: failed to decode, ret = -1
failed to decode the batch, n_batch = 2048, ret = -1
main: llama_decode() failed

I probably won't have time to look into this more until later this afternoon, but figured I'd post here in case this is something really obvious that you have a pointer for.

Also started watching your talk, very helpful so far, thank you for the link!

So... just a pointer that TG is a bit slower with ROCM, as usual

/home/llama.cpp/build-wmma/bin/llama-bench -fa 1 -m Qwen3.5-35B-A3B-Q4_0.gguf
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon RX 7900 XTX, gfx1100 (0x1100), VMM: no, Wave Size: 32

model size params backend ngl fa test t/s
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 1 pp512 2237.42 ± 17.27
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 1 tg128 75.63 ± 0.05

build: a96a1120b (8149)

I'll try with Vulkan in some time

It's a Sapphire Nitro 7900 XTX

> rocm-smi

======================================= ROCm System Management Interface =======================================
================================================= Concise Info =================================================
Device  Node  IDs              Temp    Power  Partitions          SCLK  MCLK   Fan  Perf  PwrCap  VRAM%  GPU%  
              (DID,     GUID)  (Edge)  (Avg)  (Mem, Compute, ID)                                               
================================================================================================================
0       1     0x744c,   30404  41.0°C  65.0W  N/A, N/A, 0         0Mhz  96Mhz  0%   auto  315.0W  1%     0%    
================================================================================================================
============================================= End of ROCm SMI Log ==============================================

Power cap can be raised to 400W with LACT but it doesn't increase inference performance

Mi50 32GB Vulkan comparisons between this and Q4_K_M. Prefer running RoCM but it is apparently broken for Qwen3/3.5 on these cards in llama.cpp atm.

model size params backend ngl fa test t/s
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 pp512 773.98 ± 12.88
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 tg128 45.76 ± 8.70
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 pp512 @ d8192 623.07 ± 7.46
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 tg128 @ d8192 50.25 ± 6.72
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 pp512 @ d16384 516.58 ± 2.45
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 tg128 @ d16384 48.92 ± 6.41
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 pp512 @ d32768 389.30 ± 1.94
qwen35moe ?B Q4_0 19.78 GiB 34.66 B Vulkan 99 1 tg128 @ d32768 49.71 ± 0.03
model size params backend ngl fa test t/s
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 pp512 724.08 ± 9.97
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 tg128 46.39 ± 8.04
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 pp512 @ d8192 583.25 ± 5.89
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 tg128 @ d8192 47.37 ± 6.21
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 pp512 @ d16384 490.11 ± 3.56
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 tg128 @ d16384 48.76 ± 0.02
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 pp512 @ d32768 373.87 ± 2.40
qwen35moe ?B Q4_K - Medium 19.76 GiB 34.66 B Vulkan 99 1 tg128 @ d32768 47.00 ± 0.01

I tried running it on one and two RX 7900 XTXs via ROCm 7.0 in mainline llama.cpp and was surprised that my prompt processing speed was much lower than everyone else's here, maybe because they're running at Gen 4 x8.

llama.cpp b8118:
| model | size | params | backend | ngl | n_batch | n_ubatch | fa | dev | test | t/s | | ------------------------------ | ---------: | ---------: | ---------- | --: | ------: | -------: | -: | ------------ | --------------: | -------------------: | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | pp512 | 1150.48 ± 13.14 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | pp2048 | 1065.93 ± 2.43 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | tg128 | 77.82 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | pp512 | 1133.66 ± 3.95 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | pp2048 | 1064.27 ± 4.29 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | tg128 | 77.73 ± 0.03 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | pp512 | 1144.25 ± 9.05 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | pp2048 | 1054.87 ± 5.38 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | tg128 | 77.72 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | pp512 | 1144.97 ± 11.15 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | pp2048 | 1048.61 ± 6.19 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | tg128 | 77.65 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | pp512 | 1126.11 ± 11.37 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | pp2048 | 1402.90 ± 4.41 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | tg128 | 77.63 ± 0.01 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | pp512 | 1130.31 ± 8.88 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | pp2048 | 1402.49 ± 3.62 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | tg128 | 77.57 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | pp512 | 1122.17 ± 13.26 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | pp2048 | 1039.86 ± 6.01 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | tg128 | 77.56 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | pp512 | 1129.72 ± 7.79 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | pp2048 | 1394.09 ± 4.89 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | tg128 | 77.55 ± 0.01 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | pp512 | 1113.94 ± 13.80 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | pp2048 | 1662.56 ± 3.71 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | tg128 | 77.51 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1089.27 ± 15.39 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1352.76 ± 27.08 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | tg128 | 47.64 ± 1.44 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1098.27 ± 11.82 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1352.23 ± 23.38 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 47.15 ± 1.22 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1096.52 ± 4.12 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1354.47 ± 23.44 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 46.49 ± 1.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1092.73 ± 9.39 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1340.04 ± 9.22 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | tg128 | 46.93 ± 1.07 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1084.29 ± 11.74 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1546.06 ± 13.72 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 46.72 ± 0.76 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1086.29 ± 9.10 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1548.29 ± 10.47 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 47.14 ± 1.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1097.60 ± 8.07 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1356.50 ± 11.77 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | tg128 | 46.40 ± 0.95 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1102.19 ± 5.43 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1546.77 ± 7.03 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 47.45 ± 1.36 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1094.95 ± 12.63 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1668.27 ± 3.09 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 47.40 ± 1.56 |

ran as:
$ llama-bench -m Qwen3.5-35B-A3B-Q4_0.gguf -dev ROCm1,ROCm0/ROCm1 -fa 1 -ub 512,1024,2048 -b 512,1024,2048 -p 512,2048


after I updated my llama.cpp to b8157 since I built the container before the model family was released:
| model | size | params | backend | ngl | n_batch | n_ubatch | fa | dev | test | t/s | | ------------------------------ | ---------: | ---------: | ---------- | --: | ------: | -------: | -: | ------------ | --------------: | -------------------: | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | pp512 | 1157.92 ± 7.70 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | pp2048 | 1077.12 ± 5.98 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm1 | tg128 | 77.96 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | pp512 | 1151.54 ± 9.80 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | pp2048 | 1067.33 ± 5.85 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm1 | tg128 | 77.89 ± 0.01 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | pp512 | 1149.20 ± 12.38 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | pp2048 | 1068.24 ± 4.60 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm1 | tg128 | 77.79 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | pp512 | 1138.35 ± 15.34 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | pp2048 | 1059.72 ± 7.97 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm1 | tg128 | 77.77 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | pp512 | 1137.23 ± 15.19 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | pp2048 | 1420.14 ± 2.56 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm1 | tg128 | 77.73 ± 0.03 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | pp512 | 1133.40 ± 5.93 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | pp2048 | 1409.46 ± 2.86 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm1 | tg128 | 77.68 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | pp512 | 1129.49 ± 8.84 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | pp2048 | 1043.13 ± 7.67 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm1 | tg128 | 77.66 ± 0.03 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | pp512 | 1123.92 ± 7.31 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | pp2048 | 1398.37 ± 7.38 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm1 | tg128 | 77.63 ± 0.03 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | pp512 | 1125.00 ± 5.34 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | pp2048 | 1668.08 ± 3.59 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm1 | tg128 | 77.59 ± 0.02 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1089.83 ± 9.80 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1354.68 ± 22.79 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 512 | 1 | ROCm0/ROCm1 | tg128 | 47.03 ± 0.32 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1094.52 ± 12.06 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1357.38 ± 24.90 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 46.64 ± 1.39 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1087.45 ± 16.25 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1358.60 ± 17.26 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 512 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 46.83 ± 1.68 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1090.26 ± 6.67 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1336.57 ± 13.83 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 512 | 1 | ROCm0/ROCm1 | tg128 | 46.96 ± 1.60 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1087.85 ± 11.50 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1548.30 ± 13.66 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 47.04 ± 1.47 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1095.73 ± 6.58 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1547.66 ± 5.35 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 1024 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 46.95 ± 1.44 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | pp512 | 1101.79 ± 9.09 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | pp2048 | 1355.57 ± 16.92 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 512 | 1 | ROCm0/ROCm1 | tg128 | 46.75 ± 1.67 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | pp512 | 1095.60 ± 8.75 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | pp2048 | 1540.47 ± 9.33 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 1024 | 1 | ROCm0/ROCm1 | tg128 | 47.13 ± 1.43 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | pp512 | 1086.76 ± 14.26 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | pp2048 | 1669.33 ± 5.04 | | qwen35moe ?B Q4_0 | 19.78 GiB | 34.66 B | ROCm | 99 | 2048 | 2048 | 1 | ROCm0/ROCm1 | tg128 | 46.58 ± 1.19 |
---

edit:
I then noticed that disabling flash attention gives me closer pp2048 to what the others got here with a regular Q8_0 quant and this Q4_0 quant:

$ llama-bench -m models/Qwen/Qwen3.5-35B-A3B-Q8_0.gguf -dev ROCm0/ROCm1 -fa 0,1 -b 2048 -ub 2048 -p 512,2048
ggml_cuda_init: found 3 ROCm devices:
Device 0: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 1: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 2: , gfx1036 (0x1036), VMM: no, Wave Size: 32

model size params backend ngl n_ubatch fa dev test t/s
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 0 ROCm0/ROCm1 pp512 1001.33 ± 5.43
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 0 ROCm0/ROCm1 pp2048 1723.03 ± 3.69
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 0 ROCm0/ROCm1 tg128 45.30 ± 0.13
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 1 ROCm0/ROCm1 pp512 965.94 ± 13.66
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 1 ROCm0/ROCm1 pp2048 1535.52 ± 4.11
qwen35moe ?B Q8_0 34.36 GiB 34.66 B ROCm 99 2048 1 ROCm0/ROCm1 tg128 45.43 ± 0.14

$ llama-bench -m models/Qwen/Qwen3.5-35B-A3B-Q4_0.gguf -dev ROCm1 -fa 0,1 -ub 2048 -b 2048 -p 512,2048
ggml_cuda_init: found 3 ROCm devices:
Device 0: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 1: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 2: , gfx1036 (0x1036), VMM: no, Wave Size: 32

model size params backend ngl n_ubatch fa dev test t/s
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 0 ROCm1 pp512 1217.59 ± 7.24
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 0 ROCm1 pp2048 1951.49 ± 6.77
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 0 ROCm1 tg128 77.93 ± 0.01
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 1 ROCm1 pp512 1152.96 ± 9.31
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 1 ROCm1 pp2048 1719.61 ± 4.20
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm 99 2048 1 ROCm1 tg128 77.78 ± 0.02

@vineetk13 gen4 x8 shouldn't be a factor since it affects model load times, not inference performance itself (once the model has been loaded to VRAM)

Check if you compiled llama.cpp with rocWMMA, otherwise you might be facing the same issue as the poster here: https://github.com/ggml-org/llama.cpp/discussions/15021#discussioncomment-15825763

Thanks all for sharing some benchmarks! Interestingly it seems like vulkan performance is indeed pretty strong with this custom mix optimized for vulkan!

A llama.cpp vulkan dev, 0cc4m, did some testing too showing this quant doing quite well with Vulkan on a newer GPU:

image

image

@vernaut

Hey, sorry, you did everything correctly!! but llama-sweep-bench does not work on mainline just for these new qwen arches apparently, i forgot about that as ik mentioned it here how to recreate this kind of graph with llama-bench -d but I don't have a script for that worked out. https://github.com/ikawrakow/ik_llama.cpp/pull/1328


PS

For vulkan folks check out 0cc4m's great recent FOSDEM'26 Vulkan API in llama.cpp talk

@ubergarm ahh got it, appreciate the links! I'll try building+running ik_llama.cpp later today to see if that works. Saw your similar quant for Qwen3-Coder-Next as well, I might try that out and I will post some benches if I do... would also be down to test the Qwen3.5-27B dense model if you were to make a vulkan optimized quant for that one 😁 although I guess the jury's still out on how that model compares to this MoE in general.

I'm definitely curious about why/how this quant format manages to be so much faster, especially if there are aspects of that answer that can be ported to more space-friendly quants in the future. I'll check out 0cc4m's talk!

@vernaut

Super! A person on Beaver AI Discord made a ik_llama.cpp docker build, I haven't tried it yet and it may only have CUDA support: https://github.com/Steel-skull/ik_llama.cpp/pkgs/container/ik_llama.cpp otherwise hit me up if you run into any snags compiling and i'm not 100% how it will go for vulkan though last i checked a few months ago it worked fine with the mainline compatible quant types. (no vulkan kernels for the newer ik_llama.cpp quantization types unfortunately)

hah nice glad you found: https://huggingface.co/ubergarm/Qwen3-Coder-Next-GGUF?show_file_info=Qwen3-Coder-Next-Q4_0.gguf

I'll likely check the 27B dense, but these MoE optimized recipes don't work as well for dense models given all the weights are always active. still it is possible to use q8_0/q4_0/q4_1 and possibly iq4_nl which may be fastest for vulkan even on dense.

I'm definitely curious about why/how this quant format manages to be so much faster

So each quantization type has unique optimized matrix multiplication kernels depending on the backend used to compute it e.g. CPU, CUDA, Vulkan, etc. there has been more vulkan kernel developer time put into optimizing kernels for those quant types I chose to use.

@vineetk13 gen4 x8 shouldn't be a factor since it affects model load times, not inference performance itself (once the model has been loaded to VRAM)

Check if you compiled llama.cpp with rocWMMA, otherwise you might be facing the same issue as the poster here: https://github.com/ggml-org/llama.cpp/discussions/15021#discussioncomment-15825763

I hadn't tried disabling rocWMMA in the compilation in the previous message. With it disabled I do get a marginally higher pp2048 compared to before, which sounds counterintuitive. I also was under the impression that the ROCm backend had higher prompt processing while Vulkan had higher token generation, not Vulkan is better on both (at least for this model family I guess).

root@cfa1ba735865:/app# llama-bench -m models/Qwen/Qwen3.5-35B-A3B-Q4_0.gguf -dev ROCm1,Vulkan0 -fa 0,1 -ub 2048 -b 2048 -p 512,2048
ggml_cuda_init: found 3 ROCm devices:
Device 0: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 1: , gfx1100 (0x1100), VMM: no, Wave Size: 32
Device 2: , gfx1036 (0x1036), VMM: no, Wave Size: 32
ggml_vulkan: Found 3 Vulkan devices:
ggml_vulkan: 0 = AMD Unknown (RADV GFX1100) (radv) | uma: 0 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 65536 | int dot: 1 | matrix cores: none
ggml_vulkan: 1 = AMD Unknown (RADV RAPHAEL_MENDOCINO) (radv) | uma: 1 | fp16: 1 | bf16: 0 | warp size: 32 | shared memory: 65536 | int dot: 1 | matrix cores: none
ggml_vulkan: 2 = AMD Unknown (RADV GFX1100) (radv) | uma: 0 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 65536 | int dot: 1 | matrix cores: none

model size params backend ngl n_ubatch fa dev test t/s
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 ROCm1 pp512 1189.08 ± 13.40
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 ROCm1 pp2048 1938.04 ± 5.20
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 ROCm1 tg128 78.26 ± 0.02
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 ROCm1 pp512 1195.58 ± 10.18
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 ROCm1 pp2048 1976.48 ± 18.98
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 ROCm1 tg128 78.33 ± 0.03
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 Vulkan0 pp512 2202.61 ± 21.95
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 Vulkan0 pp2048 2404.09 ± 4.68
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 0 Vulkan0 tg128 95.66 ± 0.04
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 Vulkan0 pp512 2208.46 ± 11.86
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 Vulkan0 pp2048 2472.40 ± 2.04
qwen35moe ?B Q4_0 19.78 GiB 34.66 B ROCm,Vulkan 99 2048 1 Vulkan0 tg128 94.35 ± 0.07
Owner

@vernaut

Fresh update on https://github.com/ubergarm/llama.cpp/tree/ug/port-sweep-bench now you can run llama-sweep-bench on mainline with the new Qwen models without getting that error.

I have some example commands, but for hybrid inference with 2x GPUs (cuda, honestly not sure if -sm graph works on vulkan, guessing not?) ik's CPU chunked delta net implementation is looking quite performant:

sweep-bench-Qwen3.5-397B-A17B-Q3_K-PR1368-mainline

the ik_llama.cpp PR with more details and commands: https://github.com/ikawrakow/ik_llama.cpp/pull/1368#issuecomment-4008379564

Sign up or log in to comment