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>(
items0: Line<N>,
coordinates0: Line<u32>,
items1: Line<N>,
coordinates1: Line<u32>,
) -> (Line<N>, Line<u32>)where
N: Numeric,
pub fn choose_argmax<N>(
items0: Line<N>,
coordinates0: Line<u32>,
items1: Line<N>,
coordinates1: Line<u32>,
) -> (Line<N>, Line<u32>)where
N: Numeric,
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>(
context: &mut CubeContext,
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>::ExpandTypewhere
N: Numeric,
Trait Implementations§
Source§impl<In> ReduceInstruction<In> for ArgMaxwhere
In: Numeric,
impl<In> ReduceInstruction<In> for ArgMaxwhere
In: Numeric,
Source§type AccumulatorItem = (Line<In>, Line<u32>)
type AccumulatorItem = (Line<In>, 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.Source§fn null_input(line_size: u32) -> Line<In>
fn null_input(line_size: u32) -> Line<In>
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(
line_size: u32,
) -> <ArgMax as ReduceInstruction<In>>::AccumulatorItem
fn null_accumulator( line_size: u32, ) -> <ArgMax as ReduceInstruction<In>>::AccumulatorItem
A accumulator such that
Self::fuse_accumulators(accumulator, Self::null_accumulator() always returns
is guaranteed to return accumulator unchanged.Source§fn assign_accumulator(
destination: &mut <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
source: &<ArgMax as ReduceInstruction<In>>::AccumulatorItem,
)
fn assign_accumulator( destination: &mut <ArgMax as ReduceInstruction<In>>::AccumulatorItem, source: &<ArgMax as ReduceInstruction<In>>::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(
accumulator: &<ArgMax as ReduceInstruction<In>>::AccumulatorItem,
item: Line<In>,
coordinate: Line<u32>,
use_planes: bool,
) -> <ArgMax as ReduceInstruction<In>>::AccumulatorItem
fn reduce( accumulator: &<ArgMax as ReduceInstruction<In>>::AccumulatorItem, item: Line<In>, coordinate: Line<u32>, use_planes: bool, ) -> <ArgMax as ReduceInstruction<In>>::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(
lhs: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
rhs: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
) -> <ArgMax as ReduceInstruction<In>>::AccumulatorItem
fn fuse_accumulators( lhs: <ArgMax as ReduceInstruction<In>>::AccumulatorItem, rhs: <ArgMax as ReduceInstruction<In>>::AccumulatorItem, ) -> <ArgMax as ReduceInstruction<In>>::AccumulatorItem
Reduce two accumulators into a single accumulator.
Source§fn merge_line<Out>(
accumulator: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
_shape_axis_reduce: u32,
) -> Outwhere
Out: Numeric,
fn merge_line<Out>(
accumulator: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
_shape_axis_reduce: u32,
) -> Outwhere
Out: Numeric,
Reduce all elements of the accumulator into a single output element of type
Out.Source§fn to_output_perpendicular<Out>(
accumulator: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
_shape_axis_reduce: u32,
) -> Line<Out>where
Out: Numeric,
fn to_output_perpendicular<Out>(
accumulator: <ArgMax as ReduceInstruction<In>>::AccumulatorItem,
_shape_axis_reduce: u32,
) -> Line<Out>where
Out: Numeric,
Convert each element of the accumulator into the expected output element of type
Out.fn __expand_null_input( context: &mut CubeContext, line_size: u32, ) -> <Line<In> as CubeType>::ExpandType
fn __expand_null_accumulator( context: &mut CubeContext, line_size: u32, ) -> <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType
fn __expand_assign_accumulator( context: &mut CubeContext, destination: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType, source: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
fn __expand_reduce( context: &mut CubeContext, accumulator: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType, item: <Line<In> as CubeType>::ExpandType, coordinate: <Line<u32> as CubeType>::ExpandType, use_planes: bool, ) -> <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType
fn __expand_fuse_accumulators( context: &mut CubeContext, lhs: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType, rhs: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType, ) -> <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType
fn __expand_merge_line<Out>(
context: &mut CubeContext,
accumulator: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType,
_shape_axis_reduce: <u32 as CubeType>::ExpandType,
) -> <Out as CubeType>::ExpandTypewhere
Out: Numeric,
fn __expand_to_output_perpendicular<Out>(
context: &mut CubeContext,
accumulator: <<ArgMax as ReduceInstruction<In>>::AccumulatorItem as CubeType>::ExpandType,
_shape_axis_reduce: <u32 as CubeType>::ExpandType,
) -> <Line<Out> as CubeType>::ExpandTypewhere
Out: Numeric,
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more