pub struct CublasScope {
pub ffn: bool,
pub attn: bool,
pub ssm: bool,
pub head: bool,
}Expand description
Which projection FAMILIES take a cuBLASLt GEMM arm.
WHY a set and not a bool — H100, 2026-09-11, Qwen/Qwen3.8-27B-FP8
native FP8, tip 5f78270dc, “config B” of the round-3 receipt.
ATLAS_CUBLAS_GEMM=1 resolved to ONE global boolean, so the variable that
arms #917’s dense-FFN W8A8 fast path ALSO armed the SSM in_proj_qkvz arm,
which materialised a cached BF16 dequant of the fused QKVZ weight
([10240,5120] + [6144,5120] x 2 B = 167772160 bytes per layer, ~10.3
GiB over 48 SSM layers) outside the buffer ledger. One 28-token prefill ate
6120 MiB and died at layer 36 with cuMemAlloc_v2 ... status 2. The FFN arm
under test could not be exercised end-to-end on an 80 GB card, and no knob
separated the two. The CUTLASS family next door already spells its
projections out (ATLAS_CUTLASS_NVFP4_QKVZ, ..._ATTN_Q, ..._ATTN_KV,
..._ATTN_O, ..._SSM_OUT); this gives cuBLASLt the same property in one
variable instead of five.
GRAMMAR — ATLAS_CUBLAS_GEMM=<token>[,<token>]*, ASCII-case-insensitive,
whitespace around a token ignored:
| token | meaning |
|---|---|
ffn | dense-FFN + MoE shared-expert projections |
attn | attention Q/K/V, O and the output gate |
ssm | SSM/GDN in_proj_qkvz |
head | LM / MTP head (see CublasScope::head) |
all, 1, true | every family — the pre-2026-09-11 spelling |
off, 0, false, empty | the empty set |
The result is the UNION of the tokens, so off adds nothing rather than
clearing what another token armed (ffn,off is ffn). Unknown tokens are
dropped with a warning and never widen the set: a typo must not silently arm
an arm, which is the exact failure above.
Fields§
§ffn: boolDense-FFN gate/up/down and the MoE shared expert — #917’s W8A8 arm.
attn: boolAttention Q/K/V, O projection and the output gate.
ssm: boolSSM/GDN fused in_proj_qkvz prefill projection.
head: boolLM / MTP head. Parsed, carried and covered by all, but NO dispatch
site reads it yet — setting head is inert today. Named anyway so the
grammar is the complete family list and all has a fixed meaning; a
lever that silently drops a spelling is worse than one that documents
an unclaimed slot.
Implementations§
Source§impl CublasScope
impl CublasScope
Trait Implementations§
Source§impl Clone for CublasScope
impl Clone for CublasScope
Source§fn clone(&self) -> CublasScope
fn clone(&self) -> CublasScope
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CublasScope
impl Debug for CublasScope
Source§impl Default for CublasScope
impl Default for CublasScope
Source§fn default() -> CublasScope
fn default() -> CublasScope
Source§impl PartialEq for CublasScope
impl PartialEq for CublasScope
impl Copy for CublasScope
impl Eq for CublasScope
impl StructuralPartialEq for CublasScope
Auto Trait Implementations§
impl Freeze for CublasScope
impl RefUnwindSafe for CublasScope
impl Send for CublasScope
impl Sync for CublasScope
impl Unpin for CublasScope
impl UnwindSafe for CublasScope
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.