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<T: Numeric, N: Size>(
items0: Vector<T, N>,
coordinates0: Vector<u32, N>,
items1: Vector<T, N>,
coordinates1: Vector<u32, N>,
) -> (Vector<T, N>, Vector<u32, N>)
pub fn choose_argmax<T: Numeric, N: Size>( items0: Vector<T, N>, coordinates0: Vector<u32, N>, items1: Vector<T, N>, coordinates1: Vector<u32, N>, ) -> (Vector<T, N>, Vector<u32, N>)
Compare two pairs of items and coordinates and return a new pair where each element in the vectors is the maximal item with its coordinate. In case of equality, the lowest coordinate is selected.
pub fn __expand_choose_argmax<T: Numeric, N: Size>( scope: &mut Scope, items0: <Vector<T, N> as RudaType>::ExpandType, coordinates0: <Vector<u32, N> as RudaType>::ExpandType, items1: <Vector<T, N> as RudaType>::ExpandType, coordinates1: <Vector<u32, N> as RudaType>::ExpandType, ) -> <(Vector<T, N>, Vector<u32, N>) as RudaType>::ExpandType
Trait Implementations§
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
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 = ()
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 as RudaType>::ExpandType, ) -> <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 RudaType for ArgMax
impl RudaType for ArgMax
type ExpandType = ArgMaxExpand
Auto Trait Implementations§
impl Freeze for ArgMax
impl RefUnwindSafe for ArgMax
impl Send for ArgMax
impl Sync for ArgMax
impl Unpin for ArgMax
impl UnsafeUnpin 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