pub struct Fp8TwinSet {
pub q: bool,
pub k: bool,
pub v: bool,
pub o: bool,
}Expand description
Which of the four attention projections get an FP8 [K, N] transposed twin
built by Qwen3AttentionLayer::transpose_fp8_for_prefill.
WHY per projection and not one flag (#915): the four are reached by DIFFERENT prefill chains and only two of them are W8A8-gated.
- K and V are read by
prefill/cache_skip_qkv.rs:218/:235, whose dispatch chain has no W8A8 arm at all — andcache_skipis the first-chunk path (trait_impl/prefill_inner.rs:138,seq_len_start == 0) taken by every request. Their twins are never dead. - Q on that chain is behind
ATLAS_ATTN_PREFILL_Q_T=1(cache_skip_qkv.rs:142); otherwise it is reached only after the W8A8 arm inprefill/paged_qkv.rs:220declines. - O is routed to
prefill/paged_oproj.rsfrom both chains, so it is reached only after the W8A8 arm atpaged_oproj.rs:94declines.
On 1xH100 (Qwen3.8-27B-FP8) the four cost 100 MiB/layer x 16 layers =
1,600 MB — the weight_map/quantized.rs:643 ledger row.
Fields§
§q: bool§k: bool§v: bool§o: boolImplementations§
Trait Implementations§
Source§impl Clone for Fp8TwinSet
impl Clone for Fp8TwinSet
Source§fn clone(&self) -> Fp8TwinSet
fn clone(&self) -> Fp8TwinSet
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Fp8TwinSet
impl Debug for Fp8TwinSet
Source§impl Default for Fp8TwinSet
impl Default for Fp8TwinSet
Source§fn default() -> Fp8TwinSet
fn default() -> Fp8TwinSet
Returns the “default value” for a type. Read more
Source§impl PartialEq for Fp8TwinSet
impl PartialEq for Fp8TwinSet
impl Copy for Fp8TwinSet
impl Eq for Fp8TwinSet
impl StructuralPartialEq for Fp8TwinSet
Auto Trait Implementations§
impl Freeze for Fp8TwinSet
impl RefUnwindSafe for Fp8TwinSet
impl Send for Fp8TwinSet
impl Sync for Fp8TwinSet
impl Unpin for Fp8TwinSet
impl UnwindSafe for Fp8TwinSet
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
Mutably borrows from an owned value. Read more
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
Compare self to
key and return true if they are equal.