pub enum ReduceOperation {
Sum(Sum),
Prod(Prod),
Mean(Mean),
MaxAbs(MaxAbs),
ArgMax(ArgMax),
ArgMin(ArgMin),
Max(Max),
Min(Min),
ArgTopK(ArgTopK),
TopK(TopK),
}Variants§
Sum(Sum)
Prod(Prod)
Mean(Mean)
MaxAbs(MaxAbs)
ArgMax(ArgMax)
ArgMin(ArgMin)
Max(Max)
Min(Min)
ArgTopK(ArgTopK)
TopK(TopK)
Implementations§
Source§impl ReduceOperation
impl ReduceOperation
pub fn new_Sum(_0: Sum) -> Self
pub fn __expand_new_Sum( _: &mut Scope, _0: <Sum as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_Prod(_0: Prod) -> Self
pub fn __expand_new_Prod( _: &mut Scope, _0: <Prod as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_Mean(_0: Mean) -> Self
pub fn __expand_new_Mean( _: &mut Scope, _0: <Mean as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_MaxAbs(_0: MaxAbs) -> Self
pub fn __expand_new_MaxAbs( _: &mut Scope, _0: <MaxAbs as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_ArgMax(_0: ArgMax) -> Self
pub fn __expand_new_ArgMax( _: &mut Scope, _0: <ArgMax as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_ArgMin(_0: ArgMin) -> Self
pub fn __expand_new_ArgMin( _: &mut Scope, _0: <ArgMin as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_Max(_0: Max) -> Self
pub fn __expand_new_Max( _: &mut Scope, _0: <Max as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_Min(_0: Min) -> Self
pub fn __expand_new_Min( _: &mut Scope, _0: <Min as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_ArgTopK(_0: ArgTopK) -> Self
pub fn __expand_new_ArgTopK( _: &mut Scope, _0: <ArgTopK as RudaType>::ExpandType, ) -> ReduceOperationExpand
pub fn new_TopK(_0: TopK) -> Self
pub fn __expand_new_TopK( _: &mut Scope, _0: <TopK as RudaType>::ExpandType, ) -> ReduceOperationExpand
Trait Implementations§
Source§impl Clone for ReduceOperation
impl Clone for ReduceOperation
Source§fn clone(&self) -> ReduceOperation
fn clone(&self) -> ReduceOperation
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ReduceOperation
impl Debug for ReduceOperation
Source§impl ReduceFamily for ReduceOperation
impl ReduceFamily for ReduceOperation
type Instruction<P: ReducePrecision> = ReduceOperation
type Config = ReduceOperationConfig
Source§impl<P: ReducePrecision> ReduceInstruction<P> for ReduceOperation
impl<P: ReducePrecision> ReduceInstruction<P> for ReduceOperation
When multiple agents are collaborating to reduce a single slice,
we need a share accumulator to store multiple
AccumulatorItem.
This is most likely a SharedMemory<Vector<T>> or a struct or tuple of vectorized shared memories.type Config = ReduceOperationConfig
Source§fn requirements(this: &Self) -> ReduceRequirements
fn requirements(this: &Self) -> ReduceRequirements
Requirements of the reduce.
fn accumulator_format(this: &Self) -> AccumulatorFormat
fn from_config(config: Self::Config) -> Self
Source§fn null_input(this: &Self) -> Vector<P::EI, P::SI>
fn null_input(this: &Self) -> Vector<P::EI, P::SI>
A input such that
Self::reduce(accumulator, Self::null_input(), coordinate, use_planes)
is guaranteed to return accumulator unchanged for any choice of coordinate.Source§fn null_accumulator(this: &Self) -> Accumulator<P>
fn null_accumulator(this: &Self) -> Accumulator<P>
A accumulator such that
Self::fuse_accumulators(accumulator, Self::null_accumulator() always returns
is guaranteed to return accumulator unchanged.Source§fn reduce(
this: &Self,
accumulator: &mut Accumulator<P>,
item: Item<P>,
reduce_step: ReduceStep,
)
fn reduce( this: &Self, accumulator: &mut Accumulator<P>, item: Item<P>, reduce_step: ReduceStep, )
If
ReduceStep is Plane, reduce all the item and coordinate within the accumulator.
if ReduceStep is Identity, reduce the given item and coordinate into the accumulator.fn plane_reduce_inplace(this: &Self, accumulator: &mut Accumulator<P>)
Source§fn fuse_accumulators(
this: &Self,
accumulator: &mut Accumulator<P>,
other: &Accumulator<P>,
)
fn fuse_accumulators( this: &Self, accumulator: &mut Accumulator<P>, other: &Accumulator<P>, )
Reduce a whole accumulator (other) in accumulator.
Source§fn to_output_parallel<Out: Numeric>(
this: &Self,
accumulator: Accumulator<P>,
shape_axis_reduce: usize,
) -> Value<Out>
fn to_output_parallel<Out: Numeric>( this: &Self, accumulator: Accumulator<P>, shape_axis_reduce: usize, ) -> Value<Out>
Reduce all elements of the accumulator into a single output element of type
Out.Source§fn to_output_perpendicular<Out: Numeric>(
this: &Self,
accumulator: Accumulator<P>,
shape_axis_reduce: usize,
) -> Value<Vector<Out, P::SI>>
fn to_output_perpendicular<Out: Numeric>( this: &Self, accumulator: Accumulator<P>, shape_axis_reduce: usize, ) -> Value<Vector<Out, P::SI>>
Convert each element of the accumulator into the expected output element of type
Out.fn __expand_requirements( scope: &mut Scope, this: <Self as RudaType>::ExpandType, ) -> <ReduceRequirements as RudaType>::ExpandType
fn __expand_accumulator_format( scope: &mut Scope, this: <Self as RudaType>::ExpandType, ) -> AccumulatorFormat
fn __expand_from_config( scope: &mut Scope, config: Self::Config, ) -> <Self as RudaType>::ExpandType
fn __expand_null_input( scope: &mut Scope, this: <Self as RudaType>::ExpandType, ) -> <Vector<P::EI, P::SI> as RudaType>::ExpandType
fn __expand_null_accumulator( scope: &mut Scope, this: <Self as RudaType>::ExpandType, ) -> <Accumulator<P> as RudaType>::ExpandType
fn __expand_reduce( scope: &mut Scope, this: <Self as RudaType>::ExpandType, accumulator: <Accumulator<P> as RudaType>::ExpandType, item: <Item<P> as RudaType>::ExpandType, reduce_step: ReduceStep, ) -> <() as RudaType>::ExpandType
fn __expand_plane_reduce_inplace( scope: &mut Scope, this: <Self as RudaType>::ExpandType, accumulator: <Accumulator<P> as RudaType>::ExpandType, ) -> <() as RudaType>::ExpandType
fn __expand_fuse_accumulators( scope: &mut Scope, this: <Self as RudaType>::ExpandType, accumulator: <Accumulator<P> as RudaType>::ExpandType, other: <Accumulator<P> as RudaType>::ExpandType, ) -> <() as RudaType>::ExpandType
fn __expand_to_output_parallel<Out: Numeric>( scope: &mut Scope, this: <Self as RudaType>::ExpandType, accumulator: <Accumulator<P> as RudaType>::ExpandType, shape_axis_reduce: <usize as RudaType>::ExpandType, ) -> <Value<Out> as RudaType>::ExpandType
fn __expand_to_output_perpendicular<Out: Numeric>( scope: &mut Scope, this: <Self as RudaType>::ExpandType, accumulator: <Accumulator<P> as RudaType>::ExpandType, shape_axis_reduce: <usize as RudaType>::ExpandType, ) -> <Value<Vector<Out, P::SI>> as RudaType>::ExpandType
Source§impl RudaDebug for ReduceOperation
impl RudaDebug for ReduceOperation
Source§fn set_debug_name(&self, scope: &mut Scope, name: &'static str)
fn set_debug_name(&self, scope: &mut Scope, name: &'static str)
Set the debug name of this type’s expansion. Should do nothing for types that don’t appear
at runtime
Source§impl RudaType for ReduceOperation
impl RudaType for ReduceOperation
Auto Trait Implementations§
impl Freeze for ReduceOperation
impl RefUnwindSafe for ReduceOperation
impl Send for ReduceOperation
impl Sync for ReduceOperation
impl Unpin for ReduceOperation
impl UnsafeUnpin for ReduceOperation
impl UnwindSafe for ReduceOperation
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