pub struct Resumable<T>(/* private fields */);Implementations§
Trait Implementations§
Source§impl<T, U, R, A> SIMDSchema<T, U, A> for Resumable<R>where
A: Architecture,
R: ResumableSIMDSchema<T, U, A>,
impl<T, U, R, A> SIMDSchema<T, U, A> for Resumable<R>where
A: Architecture,
R: ResumableSIMDSchema<T, U, A>,
Source§type SIMDWidth = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::SIMDWidth
type SIMDWidth = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::SIMDWidth
The desired SIMD read width.
Reads from the input slice will be use this stride when accessing memory.
Source§type Accumulator = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Accumulator
type Accumulator = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Accumulator
The type used to represent partial accumulated values.
Source§type Left = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Left
type Left = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Left
The type used for the left-hand side.
Source§type Right = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Right
type Right = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Right
The type used for the right-hand side.
Source§type Return = Resumable<R>
type Return = Resumable<R>
The final return type.
This is often
f32 for complete distance functions, but need not always be.Source§type Main = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Main
type Main = <<R as ResumableSIMDSchema<T, U, A>>::NonResumable as SIMDSchema<T, U, A>>::Main
The implementation of the main loop.
Source§fn init(&self, arch: A) -> Self::Accumulator
fn init(&self, arch: A) -> Self::Accumulator
Initialize an empty (identity) accumulator.
Source§fn accumulate(
&self,
x: Self::Left,
y: Self::Right,
acc: Self::Accumulator,
) -> Self::Accumulator
fn accumulate( &self, x: Self::Left, y: Self::Right, acc: Self::Accumulator, ) -> Self::Accumulator
Perform an accumulation.
Source§fn combine(
&self,
x: Self::Accumulator,
y: Self::Accumulator,
) -> Self::Accumulator
fn combine( &self, x: Self::Accumulator, y: Self::Accumulator, ) -> Self::Accumulator
Combine two independent accumulators (allows for unrolling).
Source§fn reduce(&self, x: Self::Accumulator) -> Self::Return
fn reduce(&self, x: Self::Accumulator) -> Self::Return
Perform a reduction on the accumulator to yield the final result. Read more
Source§unsafe fn epilogue(
&self,
arch: A,
x: *const T,
y: *const U,
len: usize,
acc: Self::Accumulator,
) -> Self::Accumulator
unsafe fn epilogue( &self, arch: A, x: *const T, y: *const U, len: usize, acc: Self::Accumulator, ) -> Self::Accumulator
A supplied trait for dealing with non-full-width epilogues.
Often, masked based loading will do the right thing, but for architectures like AVX2
that have limited support for masking 8 and 16-bit operations, using a scalar
fallback may just be better. Read more
Source§fn get_simd_width() -> usize
fn get_simd_width() -> usize
!! Do not extend this function !! Read more
Source§fn get_main_bocksize() -> usize
fn get_main_bocksize() -> usize
!! Do not extend this function !! Read more
impl<T: Copy> Copy for Resumable<T>
Auto Trait Implementations§
impl<T> Freeze for Resumable<T>where
T: Freeze,
impl<T> RefUnwindSafe for Resumable<T>where
T: RefUnwindSafe,
impl<T> Send for Resumable<T>where
T: Send,
impl<T> Sync for Resumable<T>where
T: Sync,
impl<T> Unpin for Resumable<T>where
T: Unpin,
impl<T> UnsafeUnpin for Resumable<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for Resumable<T>where
T: UnwindSafe,
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