pub struct ArgMax {}Expand description
Compute the coordinate of the maximum item returning the smallest coordinate in case of equality.
Implementations§
Source§impl ArgMax
 
impl ArgMax
Sourcepub fn choose_argmax<N: Numeric>(
    items0: Line<N>,
    coordinates0: Line<u32>,
    items1: Line<N>,
    coordinates1: Line<u32>,
) -> (Line<N>, Line<u32>)
 
pub fn choose_argmax<N: Numeric>( items0: Line<N>, coordinates0: Line<u32>, items1: Line<N>, coordinates1: Line<u32>, ) -> (Line<N>, Line<u32>)
Compare two pairs of items and coordinates and return a new pair where each element in the lines is the maximal item with its coordinate. In case of equality, the lowest coordinate is selected.
pub fn __expand_choose_argmax<N: Numeric>( scope: &mut Scope, items0: <Line<N> as CubeType>::ExpandType, coordinates0: <Line<u32> as CubeType>::ExpandType, items1: <Line<N> as CubeType>::ExpandType, coordinates1: <Line<u32> as CubeType>::ExpandType, ) -> <(Line<N>, Line<u32>) as CubeType>::ExpandType
Trait Implementations§
Source§impl CubeType for ArgMax
 
impl CubeType for ArgMax
type ExpandType = ArgMaxExpand
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 ArgMax
 
impl ReduceFamily for ArgMax
type Instruction<P: ReducePrecision> = ArgMax
type Config = ()
Source§impl<P: ReducePrecision> ReduceInstruction<P> for ArgMax
 
impl<P: ReducePrecision> ReduceInstruction<P> for ArgMax
Source§type AccumulatorItem = (Line<<P as ReducePrecision>::EA>, Line<u32>)
 
type AccumulatorItem = (Line<<P as ReducePrecision>::EA>, Line<u32>)
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 ArgMax
impl RefUnwindSafe for ArgMax
impl Send for ArgMax
impl Sync for ArgMax
impl Unpin for ArgMax
impl UnwindSafe for ArgMax
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