pub struct Mean { /* private fields */ }Trait Implementations§
Source§impl CubeType for Mean
 
impl CubeType for Mean
type ExpandType = MeanExpand
Source§fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType
 
fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType
Wrapper around the init method, necessary to type inference.
Source§impl ReduceFamily for Mean
 
impl ReduceFamily for Mean
type Instruction<P: ReducePrecision> = Mean
type Config = ()
Source§impl<P: ReducePrecision> ReduceInstruction<P> for Mean
 
impl<P: ReducePrecision> ReduceInstruction<P> for Mean
Source§type AccumulatorItem = Line<<P as ReducePrecision>::EA>
 
type AccumulatorItem = Line<<P as ReducePrecision>::EA>
The intermediate state into which we accumulate new input elements.
This is most likely a 
Line<T> or a struct or tuple of lines.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<Line<T>> or a struct or tuple of lined shared memories.type Config = ()
Source§fn requirements(_this: &Self) -> ReduceRequirements
 
fn requirements(_this: &Self) -> ReduceRequirements
Requirements of the reduce.
fn from_config(_config: Self::Config) -> Self
Source§fn null_input(this: &Self, line_size: u32) -> Line<P::EI>
 
fn null_input(this: &Self, line_size: u32) -> Line<P::EI>
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, line_size: u32) -> Self::AccumulatorItem
 
fn null_accumulator(this: &Self, line_size: u32) -> Self::AccumulatorItem
A accumulator such that 
Self::fuse_accumulators(accumulator, Self::null_accumulator() always returns
is guaranteed to return accumulator unchanged.Source§fn assign_accumulator(
    this: &Self,
    destination: &mut Self::AccumulatorItem,
    source: &Self::AccumulatorItem,
)
 
fn assign_accumulator( this: &Self, destination: &mut Self::AccumulatorItem, source: &Self::AccumulatorItem, )
Assign the value of 
source into destination.
In spirit, this is equivalent to destination = source;,
but this syntax is not currently supported by CubeCL.Source§fn reduce(
    this: &Self,
    accumulator: &Self::AccumulatorItem,
    item: Line<P::EI>,
    _coordinate: ReduceCoordinate,
    use_planes: bool,
) -> Self::AccumulatorItem
 
fn reduce( this: &Self, accumulator: &Self::AccumulatorItem, item: Line<P::EI>, _coordinate: ReduceCoordinate, use_planes: bool, ) -> Self::AccumulatorItem
If 
use_planes is true, reduce all the item and coordinate within the accumulator.
Else, reduce the given item and coordinate into the accumulator.Source§fn fuse_accumulators(
    this: &Self,
    lhs: Self::AccumulatorItem,
    rhs: Self::AccumulatorItem,
) -> Self::AccumulatorItem
 
fn fuse_accumulators( this: &Self, lhs: Self::AccumulatorItem, rhs: Self::AccumulatorItem, ) -> Self::AccumulatorItem
Reduce two accumulators into a single accumulator.
Source§fn merge_line<Out: Numeric>(
    this: &Self,
    accumulator: Self::AccumulatorItem,
    shape_axis_reduce: u32,
) -> Out
 
fn merge_line<Out: Numeric>( this: &Self, accumulator: Self::AccumulatorItem, shape_axis_reduce: u32, ) -> 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: Self::AccumulatorItem,
    shape_axis_reduce: u32,
) -> Line<Out>
 
fn to_output_perpendicular<Out: Numeric>( this: &Self, accumulator: Self::AccumulatorItem, shape_axis_reduce: u32, ) -> Line<Out>
Convert each element of the accumulator into the expected output element of type 
Out.fn __expand_requirements( scope: &mut Scope, _this: <Self as CubeType>::ExpandType, ) -> <ReduceRequirements as CubeType>::ExpandType
fn __expand_from_config( scope: &mut Scope, _config: <Self::Config as CubeType>::ExpandType, ) -> <Self as CubeType>::ExpandType
fn __expand_null_input( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <Line<P::EI> as CubeType>::ExpandType
fn __expand_null_accumulator( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <Self::AccumulatorItem as CubeType>::ExpandType
fn __expand_assign_accumulator( scope: &mut Scope, this: <Self as CubeType>::ExpandType, destination: <Self::AccumulatorItem as CubeType>::ExpandType, source: <Self::AccumulatorItem as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
fn __expand_reduce( scope: &mut Scope, this: <Self as CubeType>::ExpandType, accumulator: <Self::AccumulatorItem as CubeType>::ExpandType, item: <Line<P::EI> as CubeType>::ExpandType, _coordinate: <ReduceCoordinate as CubeType>::ExpandType, use_planes: bool, ) -> <Self::AccumulatorItem as CubeType>::ExpandType
fn __expand_fuse_accumulators( scope: &mut Scope, this: <Self as CubeType>::ExpandType, lhs: <Self::AccumulatorItem as CubeType>::ExpandType, rhs: <Self::AccumulatorItem as CubeType>::ExpandType, ) -> <Self::AccumulatorItem as CubeType>::ExpandType
fn __expand_merge_line<Out: Numeric>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, accumulator: <Self::AccumulatorItem as CubeType>::ExpandType, shape_axis_reduce: <u32 as CubeType>::ExpandType, ) -> <Out as CubeType>::ExpandType
fn __expand_to_output_perpendicular<Out: Numeric>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, accumulator: <Self::AccumulatorItem as CubeType>::ExpandType, shape_axis_reduce: <u32 as CubeType>::ExpandType, ) -> <Line<Out> as CubeType>::ExpandType
Auto Trait Implementations§
impl Freeze for Mean
impl RefUnwindSafe for Mean
impl Send for Mean
impl Sync for Mean
impl Unpin for Mean
impl UnwindSafe for Mean
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