K3HostShared

Struct K3HostShared 

Source
pub struct K3HostShared {
Show 14 fields pub config: ModelConfig, pub graph: K3Graph, pub kda: KdaConfig, pub mla: MlaConfig, pub moe: LatentMoeConfig, pub output_res_proj: DenseWeight, pub output_res_norm: DenseWeight, pub output_res_proj_meta: (WeightDtype, usize), pub output_res_norm_meta: (WeightDtype, usize), pub output_host: OnceLock<(Vec<f32>, Vec<f32>)>, pub kda_kernels: OnceLock<K3KdaDecodeKernels>, pub mla_kernels: OnceLock<K3MlaDecodeKernels>, pub moe_kernels: OnceLock<K3MoeGemmKernels>, pub attnres: Mutex<HashMap<DevicePtr, AttnResStream>>,
}
Expand description

2026-09-25: One per loaded model; every decoder layer holds the same Arc.

Fields§

§config: ModelConfig§graph: K3Graph§kda: KdaConfig§mla: MlaConfig§moe: LatentMoeConfig§output_res_proj: DenseWeight§output_res_norm: DenseWeight§output_res_proj_meta: (WeightDtype, usize)§output_res_norm_meta: (WeightDtype, usize)§output_host: OnceLock<(Vec<f32>, Vec<f32>)>§kda_kernels: OnceLock<K3KdaDecodeKernels>

2026-09-25: Resolved on the first CUDA KDA decode, then reused.

§mla_kernels: OnceLock<K3MlaDecodeKernels>

2026-09-25: Resolved on the first CUDA MLA decode, then reused.

§moe_kernels: OnceLock<K3MoeGemmKernels>

2026-09-25: Resolved at load for a checkpoint with packed experts, then reused.

§attnres: Mutex<HashMap<DevicePtr, AttnResStream>>

2026-09-25: One AttnRes stream per token in flight, carried across layers. Keyed by the token’s residual pointer (hidden when that is null): prefill runs every token through one layer before the next, and each token has its own residual row, so each token keeps its own stream.

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> 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> Same for T

Source§

type Output = T

Should always be Self
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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,