Skip to main content

RowWise

Struct RowWise 

Source
pub struct RowWise<E: Numeric> {
    pub vals: Array<E>,
    pub num_rows: usize,
}
Expand description

Contains one value per row of a fragment for which the unit contributes

Example: For a 8x8 tile shared by a plane of 32 units, every unit holds 8 values in the tile.

In the following layout, values are held contiguously, and num_rows=1 because every two occurrences of the same plane id are in the same row 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31,

In the following layout, values are held disjointly, and num_rows=2 because the two occurrences of the same plane id are not in the same row 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,

Fields§

§vals: Array<E>§num_rows: usize

Implementations§

Source§

impl<E: Float> RowWise<E>

Source

pub fn recip_inplace(&mut self)

Replaces each value v (v >= 0) in a row with 1/v.

If v = 0, the result is set to 0 instead of 1/0. This occurs when the entire row is masked, meaning it should contribute no information, and ensures numerical stability.

Source

pub fn __expand_recip_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source§

impl<E: Numeric> RowWise<E>

Source

pub fn new_filled(num_rows: usize, val: E) -> RowWise<E>

Create a RowWise with the provided value at every row

Source

pub fn fill(&mut self, val: E)

Fill the existing RowWise with the provided value at every row

Source

pub fn new_min_value(num_rows: usize) -> RowWise<E>

Create a RowWise with -infinity at every row

Source

pub fn new_zero(num_rows: usize) -> RowWise<E>

Create a RowWise with zero at every row

Source

pub fn copy_from(&mut self, other: &RowWise<E>)

Fill the current RowWise with the value of other at each row

Source

pub fn add(&self, other: &RowWise<E>) -> RowWise<E>

For each row, add the the current and other, and outputs a new RowWise

Source

pub fn add_inplace(&mut self, other: &RowWise<E>)

For each row, add the other value to the current RowWise

Source

pub fn mul(&self, other: &RowWise<E>) -> RowWise<E>

For each row, multiplies the the current and other, and outputs a new RowWise

Source

pub fn mul_inplace(&mut self, other: &RowWise<E>)

For each row, multiplies the other value to the current RowWise

Source

pub fn max_inplace(&mut self, other: &RowWise<E>)

For each row, maxes the other value to the current RowWise

Source

pub fn replace_at(&mut self, i: usize, new_val: E)

Changes the value at index i

Source

pub fn cast_from<E2: Float>(row_wise: &RowWise<E>) -> RowWise<E2>

Return a copy of self, cast into E2

Source

pub fn __expand_new_filled( scope: &mut Scope, num_rows: usize, val: <E as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType

Source

pub fn __expand_fill( scope: &mut Scope, this: <Self as CubeType>::ExpandType, val: <E as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_new_min_value( scope: &mut Scope, num_rows: usize, ) -> <RowWise<E> as CubeType>::ExpandType

Source

pub fn __expand_new_zero( scope: &mut Scope, num_rows: usize, ) -> <RowWise<E> as CubeType>::ExpandType

Source

pub fn __expand_copy_from( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_add( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType

Source

pub fn __expand_add_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_mul( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType

Source

pub fn __expand_mul_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_max_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_replace_at( scope: &mut Scope, this: <Self as CubeType>::ExpandType, i: <usize as CubeType>::ExpandType, new_val: <E as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_cast_from<E2: Float>( scope: &mut Scope, row_wise: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E2> as CubeType>::ExpandType

Source§

impl<E: Float> RowWise<E>

Source

pub fn exp_diff(&self, other: &RowWise<E>) -> RowWise<E>

Computes e^(self.val - other.val) for every row, and outputs a new RowWise

Source

pub fn __expand_exp_diff( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType

Trait Implementations§

Auto Trait Implementations§

§

impl<E> Freeze for RowWise<E>

§

impl<E> RefUnwindSafe for RowWise<E>
where E: RefUnwindSafe,

§

impl<E> Send for RowWise<E>

§

impl<E> Sync for RowWise<E>

§

impl<E> Unpin for RowWise<E>
where E: Unpin,

§

impl<E> UnsafeUnpin for RowWise<E>

§

impl<E> UnwindSafe for RowWise<E>
where E: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoComptime for T

Source§

fn comptime(self) -> Self

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.