DenseFp8Plan

Struct DenseFp8Plan 

Source
pub struct DenseFp8Plan {
    pub ffn_nvfp4: bool,
    pub attn_nvfp4: bool,
    pub attn_fp8_twins: Fp8TwinSet,
}
Expand description

What a native-FP8 dense layer must materialise beyond the checkpoint bytes.

Every field is “build this derived copy”: false means the selected kernels provably never read it.

Fields§

§ffn_nvfp4: bool

NVFP4 gate/up/down and their w4a16_gemm_t_m128 transposed twins.

§attn_nvfp4: bool

NVFP4 q/k/v/o, their transposed twins, and the fused [q|k|v] twin.

§attn_fp8_twins: Fp8TwinSet

Which Fp8WeightTransposed twins transpose_fp8_for_prefill builds.

Implementations§

Source§

impl DenseFp8Plan

Source

pub fn resolve(i: DenseFp8Inputs) -> Self

The decision table. Pure — no environment reads, no allocation.

  • FFN NVFP4 — unreachable the moment set_fp8_weights runs (see the module docs: every entry point returns from inside the FP8 arm and the w8_gemm! transposed operands are a literal None). Built only under the escape hatch.
  • Attention NVFP4set_fp8_weights overwrites q_weight/k_weight/v_weight/o_weight with QuantWeight::Fp8, so the base NVFP4 weights are orphaned at load. The transposed and fused twins survive only behind the ATLAS_CUTLASS_NVFP4_* levers, which default off.
  • Attention FP8 twins, K and V — KEPT UNCONDITIONALLY. The first prefill chunk (seq_len_start == 0, the default for every request) does not go through paged_qkv.rs at all: it goes through prefill/cache_skip_qkv.rs, whose dispatch chain has no W8A8 arm, so k_fp8w_t/v_fp8w_t are dereferenced at cache_skip_qkv.rs:218 / :235 on every request regardless of fp8_blockscaled_prefill. Freeing them is a NULL-pointer kernel launch on the first token.
  • Attention FP8 twins, Q and O — Q on that same chain is behind ATLAS_ATTN_PREFILL_Q_T=1 (cache_skip_qkv.rs:142) and O is routed to paged_oproj.rs from both chains, so both are reachable only after the W8A8 arm declines — block-scaled prefill off, or a target missing one of the two kernels.

Trait Implementations§

Source§

impl Clone for DenseFp8Plan

Source§

fn clone(&self) -> DenseFp8Plan

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 DenseFp8Plan

Source§

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

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

impl PartialEq for DenseFp8Plan

Source§

fn eq(&self, other: &DenseFp8Plan) -> 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 DenseFp8Plan

Source§

impl Eq for DenseFp8Plan

Source§

impl StructuralPartialEq for DenseFp8Plan

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