Skip to main content

GpuOutputHead

Struct GpuOutputHead 

Source
pub struct GpuOutputHead { /* private fields */ }
Expand description

The output projection, resident on the GPU.

None from Self::try_build is the ordinary case, not a failure: no GPU, a weight the kernel does not handle, or a device that cannot bind it. The caller keeps using the CPU path.

Implementations§

Source§

impl GpuOutputHead

Source

pub fn try_build(model: &LoadedModel, executor: &Executor) -> Option<Self>

Uploads the model’s output projection if — and only if — every condition for it to be a win holds.

Returns None (never an error) when offload is simply not available: there is no GPU, the tensor is not Q8_0 (the 1.7B ships Q6_K, which this kernel does not decode), the tensor is missing, or the adapter cannot bind it. Every one of those is a normal machine configuration, not a fault, and the CPU path is always correct.

Source

pub fn forward( &self, executor: &Executor, x: &[f32], m: usize, ) -> Option<Vec<f32>>

logits = x @ w^T for m rows of hidden states.

§Errors

Any GPU failure, which the caller should treat as “use the CPU path this time” rather than as fatal.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,