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.
After reboot, all four B70s enumerate cleanly through Level Zero.
Level Zero order from sycl-ls --verbose:
0: PCI 03:00.01: PCI 83:00.02: PCI a3:00.03: PCI e3:00.0DRM 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.
Clean post-reboot single-card result with only one GPU exposed:
/home/steve/bench-results/qwen36-q4_0-gguf/sycl-four-b70-single-selector0-fa0-ub64-warmup-reps3-db44417-20260504T004035Z.jsonlONEAPI_DEVICE_SELECTOR=level_zero:0, -dev SYCL0, -sm none, -fa 0, -ub 64, graph enabled, oneDNN enabled, AOT+DNN build.24.723 tok/s, samples 24.7981, 24.7432, 24.6271.All four isolated Level Zero selectors passed a 16-token smoke at about 24.67-24.73 tok/s.
Layer split, selector 1,3:
ONEAPI_DEVICE_SELECTOR=level_zero:1,3, -dev SYCL0/SYCL1, -sm layer -ts 1/1, -fa 0, 512 tokens, 3 reps.24.152 tok/s, samples 24.1135, 24.1699, 24.1735.Tensor split, selector 1,3:
ONEAPI_DEVICE_SELECTOR=level_zero:1,3, -dev SYCL0/SYCL1, -sm tensor -ts 1/1, -fa 1, 512 tokens, 3 reps.26.461 tok/s, samples 26.6698, 26.6279, 26.0856.Pair sweep at 128 tokens, tensor split, equal 1/1:
0,1: 26.661 tok/s0,2: 26.652 tok/s0,3: 26.682 tok/s1,2: 26.624 tok/s1,3: 26.430 tok/s2,3: 26.213 tok/sBest validated dual tensor run:
/home/steve/bench-results/qwen36-q4_0-gguf/sycl-four-b70-dual-tensor-pair03-512-reps3-db44417-20260504T010516Z.jsonlONEAPI_DEVICE_SELECTOR=level_zero:0,3, -dev SYCL0/SYCL1, -sm tensor -ts 1/1, -fa 1, -ub 64, graph enabled, oneDNN disabled, non-AOT DNN-off build.26.872 tok/s, samples 26.892, 26.856, 26.8685.+8.7%.LocalMaxxing submission:
cmoqinkvt000fjv04ps77c42hz-lab/Qwen3.6-27B-DFlash, quantization Q4_0.spiritbuun/Qwen3.6-27B-DFlash-GGUF.backend=sycl-level-zero, so backend was omitted and SYCL/Level Zero was recorded in notes/extra flags.-t 8 as sampler temperature. Future submissions should provide explicit sampler fields.Layer split, selector 0,1,2,3:
-dev SYCL0/SYCL1/SYCL2/SYCL3, -sm layer -ts 1/1/1/1, -fa 0, 128-token smoke.23.340 tok/s.Tensor split, selector 0,1,2,3:
-dev SYCL0/SYCL1/SYCL2/SYCL3, -sm tensor -ts 1/1/1/1, -fa 1, 32-token smoke.16.548 tok/s.Best-pair ubatch sweep at 256 tokens:
-ub 32: 26.669 tok/s-ub 64: 26.674 tok/s-ub 128: 26.223 tok/s-ub 256: 26.718 tok/s-ub 512: 26.186 tok/sNo clear win over the validated -ub 64 512-token result.
Build comparisons at 256 tokens:
26.233 tok/s26.638 tok/s26.560 tok/sAsymmetric tensor split ratios:
2/1, 1/2, 3/2, and 2/3 abort at ggml-backend-meta.cpp:1014.3/1: 25.150 tok/s.1/3: 21.946 tok/s.-ts 1/1 until the meta-scheduler assertion is fixed.27 tok/s first; it is close.+8.7%, not the desired 80%+.16.5 tok/s.ggml-backend-meta.cpp:1014 assertions for asymmetric tensor splits.ONEAPI_DEVICE_SELECTOR=level_zero:N.