pub struct Dot;Expand description
Dot-product pairwise operation: multiply two vectors lane-wise.
Use with zip_reduce: a.zip_reduce(&b, Dot) equals a.dot(&b).
Trait Implementations§
impl Copy for Dot
impl Eq for Dot
Source§impl<T> ReductionOp<T> for Dotwhere
T: NumericElement,
impl<T> ReductionOp<T> for Dotwhere
T: NumericElement,
Source§unsafe fn accumulate<Arch>(
acc: <Arch as SimdKernel<T>>::Vector,
v: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
unsafe fn accumulate<Arch>(
acc: <Arch as SimdKernel<T>>::Vector,
v: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
Dot accumulation: acc = fmadd(a, b, acc) — called with the pairwise product vector.
The zip_reduce loop computes v = mul(a_chunk, b_chunk) then calls accumulate(acc, v).
Source§unsafe fn fma_pair_accumulate<Arch>(
acc: <Arch as SimdKernel<T>>::Vector,
a: <Arch as SimdKernel<T>>::Vector,
b: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
unsafe fn fma_pair_accumulate<Arch>(
acc: <Arch as SimdKernel<T>>::Vector,
a: <Arch as SimdKernel<T>>::Vector,
b: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
FMA-accelerated pairwise accumulation for dot product.
Overrides the default accumulate(acc, mul(a, b)) two-instruction sequence
with a single fmadd(a, b, acc) when the architecture supports it.
Source§unsafe fn finalize<Arch>(acc: <Arch as SimdKernel<T>>::Vector) -> Twhere
Arch: SimdKernel<T>,
unsafe fn finalize<Arch>(acc: <Arch as SimdKernel<T>>::Vector) -> Twhere
Arch: SimdKernel<T>,
Reduce the final accumulator to a scalar. Read more
Source§fn identity_scalar() -> T
fn identity_scalar() -> T
The identity element for this reduction as a scalar. Read more
Source§fn scalar_combine(a: T, b: T) -> T
fn scalar_combine(a: T, b: T) -> T
Combine two scalar partial results using this reduction. Read more
Source§fn scalar_accumulate(acc: T, elem: T) -> T
fn scalar_accumulate(acc: T, elem: T) -> T
Source§unsafe fn identity_vector<Arch>() -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
unsafe fn identity_vector<Arch>() -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
Splat the identity element into a vector register. Read more
Source§unsafe fn transform_vector<Arch>(
v: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
unsafe fn transform_vector<Arch>(
v: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
Per-element lane transform applied before combining (identity by default). Read more
Source§unsafe fn combine_vectors<Arch>(
a: <Arch as SimdKernel<T>>::Vector,
b: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
unsafe fn combine_vectors<Arch>(
a: <Arch as SimdKernel<T>>::Vector,
b: <Arch as SimdKernel<T>>::Vector,
) -> <Arch as SimdKernel<T>>::Vectorwhere
Arch: SimdKernel<T>,
Merge two partial accumulators WITHOUT the per-element transform. Read more
impl StructuralPartialEq for Dot
Auto Trait Implementations§
impl Freeze for Dot
impl RefUnwindSafe for Dot
impl Send for Dot
impl Sync for Dot
impl Unpin for Dot
impl UnsafeUnpin for Dot
impl UnwindSafe for Dot
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.