CublasScope

Struct CublasScope 

Source
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:

tokenmeaning
ffndense-FFN + MoE shared-expert projections
attnattention Q/K/V, O and the output gate
ssmSSM/GDN in_proj_qkvz
headLM / MTP head (see CublasScope::head)
all, 1, trueevery family — the pre-2026-09-11 spelling
off, 0, false, emptythe 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: bool

Dense-FFN gate/up/down and the MoE shared expert — #917’s W8A8 arm.

§attn: bool

Attention Q/K/V, O projection and the output gate.

§ssm: bool

SSM/GDN fused in_proj_qkvz prefill projection.

§head: bool

LM / 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

Source

pub const OFF: Self

No family armed — the shape an absent or off ATLAS_CUBLAS_GEMM resolves to, and the default for every build.

Source

pub const ALL: Self

Every family — what all / 1 / true resolve to.

Source

pub fn any(&self) -> bool

Whether any family is armed (for the resolved-set log line).

Trait Implementations§

Source§

impl Clone for CublasScope

Source§

fn clone(&self) -> CublasScope

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CublasScope

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CublasScope

Source§

fn default() -> CublasScope

Returns the “default value” for a type. Read more
Source§

impl PartialEq for CublasScope

Source§

fn eq(&self, other: &CublasScope) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for CublasScope

Source§

impl Eq for CublasScope

Source§

impl StructuralPartialEq for CublasScope

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more