round 33 track b: decode qsa attention and top-k #

decision: no ship #

none of six candidates meets the predeclared acceptance rule: bitwise parity plus a reproducible >=3% attention improvement without material shape regressions. production files were never edited. qsa_score was unchanged; this experiment evaluated the proposed attention and top-k changes only.

/tmp/sol_r33_qsa/sol_r33_qsa.patch is intentionally empty. it passes git -C vendor/strata apply --check --allow-empty /tmp/sol_r33_qsa/sol_r33_qsa.patch; ordinary apply --check requires a nonempty patch and is not applicable to a no-change outcome. do not apply the separately labelled rejected patches.

setup and contract #

  • local apple m5, as reported by qsa_parity. live server and :8080 untouched; no model benchmarks.
  • baseline vendor head: 296b59d2f73c8f04a805df29c2fa97655adace78, plus current working-tree kernel snapshots captured before edits.
  • immutable baseline: /tmp/sol_r33_qsa/reference/.
  • qsa.metal sha256: d2d3f311030eae507ab83148afe267b7746a15ac2231aa50aa0a22cc4403db4c
  • qsa2.metal sha256: 1e1937f95e2224ce09944c8cb549af82edc02a0ab38a1cceeb203f4f7b58d59b
  • existing vendor/strata/build-metal/qsa_parity executable; no evaluator edits or rebuild needed.
  • kernels selected through STRATA_METAL_KERNELS=/tmp/sol_r33_qsa/strata/metal/kernels; attention selected with QSA_ATTN=1 or 2.
  • each benchmark invocation ran serially, normally <0.4 s; broad bitwise invocations each ~1.3 s. no invocation exceeded 10 s.
  • timing method: existing paired benchmark, alternating order, median of nine rounds, 16 repeated dispatches; random bitwise mode uses 32 repeated dispatches.
  • source snapshots and logs for every explored candidate retained under /tmp/sol_r33_qsa/. scratch kernels restored to baseline after experiments.

candidates #

all candidates include the proposed final top-k pass cache (k_local[4], fallback for per > 4):

  1. allscale: precomputed row index, half4 key/value scales preloaded before existing barrier; v1 value pointer/scale offset hoisted.
  2. vsonly: as above but preload only value scales.
  3. rowonly: precompute row index, no scale staging.
  4. byteoffset: store row byte offset rather than row index, no scale staging.
  5. ksonly: precomputed row index plus key scale staging only.
  6. alias (parent-requested follow-up): value scales alias dead qs storage after the post-q.k barrier, populated before the existing post-softmax barrier. no extra threadgroup storage or barriers. passes paired pos0=3000 ntok=1/2/4/8 on both versions, but attn1 still regresses (n=4: 162.943 / 165.719 us; n=8: 320.544 / 326.474 us), and attn2 regresses at n=8 (379.219 / 381.766 us). this rules out added threadgroup storage as the sole explanation of this regression; no profiler evidence establishes a precise cause.

correctness #

  • allscale: all 24 paired cases passed full-buffer memcmp (13 buffers), covering both attention versions, pos0=37/2048/3000, ntok=1/2/4/8.
  • allscale: both random-input bitwise suites passed: 0/40 differences for each version, 80/80 total. these cover pos0=0,1,63,64,512,2047,2048,2050,8192,30000 and ntok=1/2/4/8; both partial attention and merged output are compared by memcmp.
  • other candidates: paired pos0=3000 at ntok=1/4/8 passed for both versions. no equivalence claim beyond these tested shapes.
  • final-cache per > 4 path was not independently exercised for topk; no topk change ships.

measured results #

representative confirmation at pos0=3000; microseconds, reference / candidate:

candidate kernel ntok=1 ntok=4 ntok=8
allscale attn1 46.659 / 47.404 163.211 / 166.000 321.250 / 326.747
allscale attn2 50.935 / 50.180 193.630 / 191.810 380.570 / 380.727
byteoffset attn1 inconclusive clock transition 162.992 / 162.130 322.190 / 320.750
byteoffset attn2 50.802 / 50.852 193.391 / 192.997 379.760 / 378.534

allscale consistently makes attn1 ~1.6–1.8% slower; attn2 gains ~1–2% at small windows but disappear at ntok=8. value-only staging behaves similarly. key-only staging does not establish an improvement. row-only and byte-offset changes yield roughly 0–0.6% gains on stable longer-window measurements, below the planned selection threshold.

top-k differences are small and inconsistent, with occasional much larger apparent clock/thermal transitions affecting both reference and unchanged stages. for example allscale confirmation attn1 topk at n=1/4/8 was 8.250/8.156, 13.677/13.687, 8.289/8.086 us; initial same-shape results did not establish a repeatable win. do not infer a top-k speedup from isolated favorable samples. the baseline same-versus-same smoke was effectively equal (attn1 162.992 / 162.904 us at n=4).

reproduction and evidence #

STRATA_METAL_KERNELS=/tmp/sol_r33_qsa/strata/metal/kernels QSA_ATTN=1 \
  vendor/strata/build-metal/qsa_parity --paired /tmp/sol_r33_qsa/reference 3000 --tokens 4
STRATA_METAL_KERNELS=/tmp/sol_r33_qsa/strata/metal/kernels QSA_ATTN=2 \
  vendor/strata/build-metal/qsa_parity --bitwise /tmp/sol_r33_qsa/reference/qsa2.metal

copy the two kernels from the named candidate snapshot (allscale/, byteoffset/, etc.) into scratch strata/metal/kernels/ first; the final scratch tree deliberately equals baseline. logs: allscale_av*_p*_n*.log, bitwise_av*.log, confirm_*.log, and candidate-specific logs. rejected diffs: *.rejected.patch. experiment contract: plan.md.

this is a valid negative performance result, not a failed implementation: the suggested transformations preserve tested outputs, but do not justify a production change on this m5.