Skip to main content

VectorAdd

Struct VectorAdd 

Source
pub struct VectorAdd;
Expand description

Elementwise vector addition. Zero-sized: it carries no state, it just names the operation so the ComputeOp impl and its two kernels hang off a type.

Trait Implementations§

Source§

impl ComputeOp for VectorAdd

Source§

type Input<'a> = VectorAddInput<'a>

The operation’s input, borrowed. A GAT (Input<'a>) so the input can hold borrows (&[f32]) without forcing them to be 'static — the whole reason a plain associated type wouldn’t do here. Both paths take it by shared reference, so the cascade can hand the SAME input to the GPU path and then, on failure, to the CPU path.
Source§

type Output = Vec<f32>

The operation’s output.
Source§

fn compute_gpu( &self, ctx: &GpuContext, input: &Self::Input<'_>, ) -> Result<Self::Output, GpuOpError>

Run on the GPU. Fallible: returns Err if the GPU path could not complete for ANY reason (shader/pipeline error, buffer map failure, device lost). A returned Err is the cascade’s signal to fall back to CPU — it must never be a panic.
Source§

fn compute_cpu(&self, input: &Self::Input<'_>) -> Self::Output

Run on the CPU in pure Rust. Infallible and always correct — this is the floor the cascade lands on, so it must be a real implementation.

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,