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: usizeImplementations§
Source§impl<E: Float> RowWise<E>
impl<E: Float> RowWise<E>
Sourcepub fn recip_inplace(&mut self)
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.
pub fn __expand_recip_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
Source§impl<E: Numeric> RowWise<E>
impl<E: Numeric> RowWise<E>
Sourcepub fn new_filled(num_rows: usize, val: E) -> RowWise<E>
pub fn new_filled(num_rows: usize, val: E) -> RowWise<E>
Create a RowWise with the provided value at every row
Sourcepub fn new_min_value(num_rows: usize) -> RowWise<E>
pub fn new_min_value(num_rows: usize) -> RowWise<E>
Create a RowWise with -infinity at every row
Sourcepub fn copy_from(&mut self, other: &RowWise<E>)
pub fn copy_from(&mut self, other: &RowWise<E>)
Fill the current RowWise with the value of other at each row
Sourcepub fn add(&self, other: &RowWise<E>) -> RowWise<E>
pub fn add(&self, other: &RowWise<E>) -> RowWise<E>
For each row, add the the current and other, and outputs a new RowWise
Sourcepub fn add_inplace(&mut self, other: &RowWise<E>)
pub fn add_inplace(&mut self, other: &RowWise<E>)
For each row, add the other value to the current RowWise
Sourcepub fn mul(&self, other: &RowWise<E>) -> RowWise<E>
pub fn mul(&self, other: &RowWise<E>) -> RowWise<E>
For each row, multiplies the the current and other, and outputs a new RowWise
Sourcepub fn mul_inplace(&mut self, other: &RowWise<E>)
pub fn mul_inplace(&mut self, other: &RowWise<E>)
For each row, multiplies the other value to the current RowWise
Sourcepub fn max_inplace(&mut self, other: &RowWise<E>)
pub fn max_inplace(&mut self, other: &RowWise<E>)
For each row, maxes the other value to the current RowWise
Sourcepub fn replace_at(&mut self, i: usize, new_val: E)
pub fn replace_at(&mut self, i: usize, new_val: E)
Changes the value at index i
Sourcepub fn cast_from<E2: Float>(row_wise: &RowWise<E>) -> RowWise<E2>
pub fn cast_from<E2: Float>(row_wise: &RowWise<E>) -> RowWise<E2>
Return a copy of self, cast into E2
pub fn __expand_new_filled( scope: &mut Scope, num_rows: usize, val: <E as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType
pub fn __expand_fill( scope: &mut Scope, this: <Self as CubeType>::ExpandType, val: <E as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
pub fn __expand_new_min_value( scope: &mut Scope, num_rows: usize, ) -> <RowWise<E> as CubeType>::ExpandType
pub fn __expand_new_zero( scope: &mut Scope, num_rows: usize, ) -> <RowWise<E> as CubeType>::ExpandType
pub fn __expand_copy_from( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
pub fn __expand_add( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType
pub fn __expand_add_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
pub fn __expand_mul( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <RowWise<E> as CubeType>::ExpandType
pub fn __expand_mul_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
pub fn __expand_max_inplace( scope: &mut Scope, this: <Self as CubeType>::ExpandType, other: <RowWise<E> as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
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
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>
impl<E: Float> RowWise<E>
Sourcepub fn exp_diff(&self, other: &RowWise<E>) -> RowWise<E>
pub fn exp_diff(&self, other: &RowWise<E>) -> RowWise<E>
Computes e^(self.val - other.val) for every row, and outputs a new RowWise