pub struct DenseFp8Inputs {
pub ffn_fp8: bool,
pub attn_fp8: bool,
pub keep_nvfp4: bool,
pub dispatch: GemmDispatch,
pub w8a8_kernels: bool,
pub attn_w4a4: bool,
pub attn_prefill_q_t: bool,
}Expand description
2026-09-25: The inputs of DenseFp8Plan::resolve. A plain struct, so the
decision-table tests set every clause without the process environment,
which keep_nvfp4_fallback caches in a OnceLock.
Fields§
§ffn_fp8: bool2026-09-25: The native FP8 dense-FFN overlay is installed on this layer
(qwen35_dense::ffn_fp8_arm_selected: METRALE_DENSE_FP8=1, tp size 1,
Fp8Dequanted, a native FP8 gate_proj).
attn_fp8: bool2026-09-25: The native FP8 attention overlay is installed on this layer.
keep_nvfp4: bool2026-09-25: METRALE_DENSE_FP8_KEEP_NVFP4 (keep_nvfp4_fallback).
dispatch: GemmDispatch2026-09-25: GemmDispatch::from_env(), the value the model stores as its
dispatch.
w8a8_kernels: bool2026-09-25: Both W8A8 prefill kernels are loaded
(per_token_group_quant_fp8 and fp8_gemm_t_blockscaled). The W8A8 arms
of prefill/paged_qkv.rs and prefill/paged_oproj.rs need both; without
them those projections fall through to the transposed W8A16 kernels,
which read the FP8 twins.
attn_w4a4: bool2026-09-25: METRALE_ATTN_W4A4 is set. The W4A4 arm of
prefill/paged_oproj.rs checks no weight type and reads
self.attn.o_proj, the NVFP4 o_proj, so this lever keeps the NVFP4
attention weights under an FP8 overlay. The Q/K/V W4A4 arm in
prefill/paged_qkv.rs requires an NVFP4 q_weight, so it never runs on
an FP8 layer.
attn_prefill_q_t: bool2026-09-25: METRALE_ATTN_PREFILL_Q_T=1. prefill/cache_skip_qkv.rs reads
it on every call and, when set, lets Q use q_fp8w_t.
Trait Implementations§
Source§impl Clone for DenseFp8Inputs
impl Clone for DenseFp8Inputs
Source§fn clone(&self) -> DenseFp8Inputs
fn clone(&self) -> DenseFp8Inputs
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DenseFp8Inputs
impl Debug for DenseFp8Inputs
Source§impl PartialEq for DenseFp8Inputs
impl PartialEq for DenseFp8Inputs
impl Copy for DenseFp8Inputs
impl Eq for DenseFp8Inputs
impl StructuralPartialEq for DenseFp8Inputs
Auto Trait Implementations§
impl Freeze for DenseFp8Inputs
impl RefUnwindSafe for DenseFp8Inputs
impl Send for DenseFp8Inputs
impl Sync for DenseFp8Inputs
impl Unpin for DenseFp8Inputs
impl UnwindSafe for DenseFp8Inputs
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
§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.