Issues / #2811

#2811 [Feature]: SYCL: a two-kernel hyper-connection read (norm + down + reduce in one launch) for Intel Arc, opt-in

open · @hotschmoe · 0 comentários · No GitHub

BenchmarksMulti-GPUModels & quantsDocumentation

Descrição

### What do you want to do?

Spend less of the decode window on the hyper-connection read on Intel Arc. On the Arc Pro B70 the SYCL port's default
read is four launches per layer half (the norm per token and stream, the sliced down projection, its reduce, the up
projection): 5.8 + 22.7 + 2.7 + 30.2 us at T = 6 rows, and the down / up kernels grow ~1.7 / 3 us per extra row. The
weights are 13.2 MB a read, so at T = 6 that is ~210 GB/s of a 600 GB/s card: the cost is kernel latency and per-row
issue, not bytes. Per decode cycle the verifier's ~100 reads are ~6 ms.

What I want: an opt-in read (`STRATA_GR_FUSED=1`, default off, the default read byte-identical) that does the norm,
the down projection and its partial reduction in one kernel - one row per 16-lane sub-group lane with the activations
uniform across the sub-group, the last work-group of a row group finishing it (an arrival counter, nothing waits, so
it is safe inside a SYCL graph) - and the up projection in a second kernel with K split over the sub-groups. The same
BF16 bytes, the default read's per-element arithmetic, another summation order: lo / rs / mixed differ at FP32
rounding level, R_out (the pending write) is bitwise. It is the structure of the Q8_0 read of `STRATA_HC_Q8=1` on
SYCL (the bug-fix PR this builds on) applied to the BF16 weights, for the cases that keep BF16: an exact read is
wanted, or the Q8_0 copies' 0.63 GiB do not fit.

Measured (2x Arc Pro B70, upstream main 296b59d2 vs the branch, Flash-Next IQ3_XXS, two-card layer split, 65536
context, a fixed prompt with a 512-token greedy reply, 3 runs): the verify window 39.4 / 39.5 / 39.7 -> 38.8 / 38.1 /
38.7 ms (-2.5%); decode 81.8 / 79.5 / 78.7 -> 86.8 / 79.0 / 88.3 tok/s (the spread is draft acceptance of the changed
output); per read at the kernel level 38.7 -> 34.8 us at T = 1, 62.0 -> 47.1 at T = 6. The PR has the details.

Workaround today: none on SYCL; `STRATA_GR_V3=1` (upstream's two-kernel read) is 4-6% SLOWER on the B70
(docs/INTEL.md, the 0.1.31 merge), and `STRATA_GR_MORE_GROUPS` / `STRATA_GR_UP_COLS` are worse there too (each extra
group recomputes the lo prologue).

Prepared with AI assistance (Claude Code): the code, the measurements and this text were produced by Claude on the submitter's two Arc Pro B70s, at the submitter's request.

No site

Links install, modelos, releases.