b70-optimization-lab

Qwen3.6 27B Q4_0 GGUF Four-B70 SYCL Results

Date: 2026-05-03 EDT / 2026-05-04 UTC

Host: Ubuntu 24.04.4 LTS, AMD EPYC 9015 8-core, 16 logical CPUs, 16 GiB RAM plus swap, 4x Intel Arc Pro B70 / BMG-G31 32 GB.

Model: /home/steve/models/qwen3.6-27b-q4_0-gguf/Qwen3.6-27B-Q4_0.gguf

llama.cpp worktree: /home/steve/src/llama.cpp-q4-b70, upstream db44417 plus local experimental B70 Vulkan/SYCL patches.

Topology

After reboot, all four B70s enumerate cleanly through Level Zero.

Level Zero order from sycl-ls --verbose:

DRM render nodes: /dev/dri/renderD128 through /dev/dri/renderD131.

steve is in the render group.

Important command syntax: llama.cpp multi-GPU runs must use slash-separated devices, for example -dev SYCL0/SYCL1. Comma-separated devices run separate benchmark cases and are not one multi-GPU run.

Single B70 Baseline

Clean post-reboot single-card result with only one GPU exposed:

All four isolated Level Zero selectors passed a 16-token smoke at about 24.67-24.73 tok/s.

Dual B70

Layer split, selector 1,3:

Tensor split, selector 1,3:

Pair sweep at 128 tokens, tensor split, equal 1/1:

Best validated dual tensor run:

LocalMaxxing submission:

Four B70

Layer split, selector 0,1,2,3:

Tensor split, selector 0,1,2,3:

Tuning Notes

Best-pair ubatch sweep at 256 tokens:

No clear win over the validated -ub 64 512-token result.

Build comparisons at 256 tokens:

Asymmetric tensor split ratios:

Next Work