VKNN 1.2.2
Patch release on top of 1.2.1 — host-side latency levers + autotune-cache reuse. Byte-identical to 1.2.1 on every correctness gate.
Performance
- GPU input convert. A whole-GPU graph's rank-4 fp32 image input now converts (fp16 + NC4HW4 layout) on the GPU instead of the host, removing the fixed input-pack from the
run()wall. Largest win on fast networks and where the host was the bottleneck; output is byte-identical. - Prefill logits row readback (
Session::setOutputRow). The whole-window prompt prefill reads back only the last real token's logits row instead of the full[S, vocab]matrix (~78 MB at S=256, vocab=151936), cutting one-time time-to-first-token. The decode token stream is unchanged.
Changed
- Autotune-cache reuse (ADR-0016). Each cached autotune entry records the level it was measured at, so raising
--tuning(fast→heavy) re-sweeps the heavier candidate set instead of reusing the lighter one, and--tuning nonenow reuses a cached fast/heavy tune when one is present — it means "run no new sweep", not "ignore a stored one".--tuning none --no-cachestill emits the deterministic default kernels, so the determinism/byte gates are unaffected.
Fixes
setOutputRowoutput shape/data consistency on an out-of-range row fallback.- README: the bit-identical / device-independent guarantee now reads
--tuning none --no-cache.
Verified byte-identical on the correctness gates — 10 CNNs across three input resolutions, Qwen and SmolVLM2 decode streams, and --tuning none --no-cache reproducing the deterministic default kernels — plus host CI.
vknn-demo-1.2.2.apk is the updated Android demo.