pub struct Glm5NextDsaKernels {
pub kpool_compress: KernelHandle,
pub compact_pools: KernelHandle,
pub index_scores: KernelHandle,
pub topk_pools: KernelHandle,
pub expand_selection: KernelHandle,
pub k_norm: KernelHandle,
pub write_geom: KernelHandle,
pub indexer_store: KernelHandle,
pub topk_to_mask: KernelHandle,
pub mla_masked_attn: KernelHandle,
}Expand description
Every kernel the DSA path launches.
Resolved with kernel() (not try_kernel): a missing DSA entry point is a hard
error, never a silent fallback onto a dense-attention path. A sparse layer that
quietly runs dense is a correctness bug that looks like a performance bug.
Fields§
§kpool_compress: KernelHandle§compact_pools: KernelHandle§index_scores: KernelHandle§topk_pools: KernelHandle§expand_selection: KernelHandle§k_norm: KernelHandleindexer.k_norm, which is an nn.LayerNorm with a bias — not an RMSNorm.
🪤 Do NOT reach for an RMSNorm kernel here. A .weight-only norm silently drops
both the mean subtraction and the bias, and nothing about the shapes says so:
k_norm.weight and k_norm.bias are both [index_head_dim]. The binder already
lists the bias as REQUIRED for exactly this reason.
✅ No new kernel needed — common/nllb_encoder.cu already carries an in-place
BF16 LayerNorm taking (x, weight, bias, rows, dim, eps), and common/ is merged
into every target. Found by grepping kernels/ before scoping a build, per the
campaign’s standing rule; this is the fifth thing that turned out to already exist.
write_geom: KernelHandleDerives this step’s selector geometry ON DEVICE from seq_len, so a captured
graph replays over the live context instead of the capture-time one.
try_kernel — without it the layer keeps the host-scalar path and graphs stay off.
indexer_store: KernelHandlePlaces the staged indexer row at a DEVICE-side position and marks it valid.
The host k_normed.offset(pos * D * 2) it replaces was the other frozen scalar.
topk_to_mask: KernelHandle🔬 ORACLE ONLY — see MASKED_ATTN_MAX_KEYS.
mla_masked_attn: KernelHandle🔬 ORACLE ONLY — see MASKED_ATTN_MAX_KEYS.
Implementations§
Source§impl Glm5NextDsaKernels
impl Glm5NextDsaKernels
pub fn resolve(gpu: &dyn GpuBackend) -> Result<Self>
Trait Implementations§
Source§impl Clone for Glm5NextDsaKernels
impl Clone for Glm5NextDsaKernels
Source§fn clone(&self) -> Glm5NextDsaKernels
fn clone(&self) -> Glm5NextDsaKernels
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more