Skip to main content

gemv_q6k_k_lcpp_src

Function gemv_q6k_k_lcpp_src 

Source
pub fn gemv_q6k_k_lcpp_src() -> String
Expand description

gemv_q4k_k_lcpp_src’s Q6_K sibling: native 6-bit superblocks decoded in-shader. The disk block is 210 bytes — NOT word-aligned — so the loader pads each block to 212 bytes (53 words); the pad is dead space (+1% bytes, lossless) and buys aligned vec4 nibble tricks instead of per-byte gymnastics. Layout per padded block: 128 ql bytes (words 0-31), 64 qh bytes (words 32-47), 16 signed scales (words 48-51), f16 d (word 52 low half).

Sub-block s (32 elements): half h = s/4, quarter q = s%4; ql nibble plane q/2, qh bit pair 2q; value = nib | (bits<<4) − 32; TWO signed 6-bit… rather i8 scales per sub-block (elements 0-15 and 16-31): w = d·sc·(q6 − 32). No minimum term (Q6_K is symmetric), so the dot is a single fused d·sc·Σ q·x per 16-element half.