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