Skip to main content

StridedTile

Struct StridedTile 

Source
pub struct StridedTile<ES: Numeric, N: Size, IO: SliceVisibility = ReadOnly> {
    pub container: Slice<Vector<ES, N>, IO>,
    pub start: u32,
    pub end: u32,
    pub stride: u32,
    pub swizzle: Swizzle,
    pub layout: MatrixLayout,
}
Expand description

Tile with a linear major dimension, and a strided minor dimension. Basic tile kind supported by all stage matmuls.

Fields§

§container: Slice<Vector<ES, N>, IO>

Slice containing all data for the stage

§start: u32

Offset of the tile in the stage

§end: u32

End of the tile in the stage, may be wrong with swizzle

§stride: u32

Stride between each row/col, depending on MatrixLayout (the other is assumed to be 1)

§swizzle: Swizzle

Swizzle object to transform the index

§layout: MatrixLayout

Layout of the tile (row-major or column-major).

Implementations§

Source§

impl<ES: Numeric, N: Size> StridedTile<ES, N>

Source

pub fn new_contiguous( container: Slice<Vector<ES, N>>, start: u32, config: StageMemoryConfig, ) -> StridedTile<ES, N>

Creates a tile from a contiguous slice of data.

The slice length must exactly match the tile size.

Source

pub fn new_contiguous_mut( container: Slice<Vector<ES, N>, ReadWrite>, start: u32, config: StageMemoryConfig, ) -> StridedTile<ES, N, ReadWrite>

Creates a tile from a contiguous slice of data.

The slice length must exactly match the tile size.

Source

pub fn new_strided( container: Slice<Vector<ES, N>>, start: u32, end: u32, stride: u32, swizzle: Swizzle, layout: MatrixLayout, ) -> StridedTile<ES, N>

Creates a tile from a strided slice of data.

The slice must include all elements of the tile, though it may include unused gaps.

Source

pub fn new_strided_mut( container: Slice<Vector<ES, N>, ReadWrite>, start: u32, end: u32, stride: u32, swizzle: Swizzle, layout: MatrixLayout, ) -> StridedTile<ES, N, ReadWrite>

Creates a tile from a strided slice of data.

The slice must include all elements of the tile, though it may include unused gaps.

Source

pub fn __expand_new_contiguous( scope: &mut Scope, container: <Slice<Vector<ES, N>> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, config: StageMemoryConfig, ) -> <StridedTile<ES, N> as CubeType>::ExpandType

Source

pub fn __expand_new_contiguous_mut( scope: &mut Scope, container: <Slice<Vector<ES, N>, ReadWrite> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, config: StageMemoryConfig, ) -> <StridedTile<ES, N, ReadWrite> as CubeType>::ExpandType

Source

pub fn __expand_new_strided( scope: &mut Scope, container: <Slice<Vector<ES, N>> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, end: <u32 as CubeType>::ExpandType, stride: <u32 as CubeType>::ExpandType, swizzle: <Swizzle as CubeType>::ExpandType, layout: MatrixLayout, ) -> <StridedTile<ES, N> as CubeType>::ExpandType

Source

pub fn __expand_new_strided_mut( scope: &mut Scope, container: <Slice<Vector<ES, N>, ReadWrite> as CubeType>::ExpandType, start: <u32 as CubeType>::ExpandType, end: <u32 as CubeType>::ExpandType, stride: <u32 as CubeType>::ExpandType, swizzle: <Swizzle as CubeType>::ExpandType, layout: MatrixLayout, ) -> <StridedTile<ES, N, ReadWrite> as CubeType>::ExpandType

Source§

impl<ES: Numeric, N: Size, IO: SliceVisibility> StridedTile<ES, N, IO>

Source

pub fn unvectorized_stride(&self) -> u32

Source

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

Source§

impl<ES: Numeric, N: Size, IO: SliceVisibility> StridedTile<ES, N, IO>

Source

pub fn as_slice(&self) -> Slice<Vector<ES, N>, ReadOnly>

Returns the tile as an offset read-only slice. Should only be used when swizzling is definitely not applicable.

Source

pub fn to_read_only(&self) -> StridedTile<ES, N, ReadOnly>

Returns a read-only view of this tile, dropping write permission on the container.

Source

pub fn __expand_as_slice( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <Slice<Vector<ES, N>, ReadOnly> as CubeType>::ExpandType

Source

pub fn __expand_to_read_only( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <StridedTile<ES, N, ReadOnly> as CubeType>::ExpandType

Source§

impl<ES: Numeric, N: Size> StridedTile<ES, N, ReadWrite>

Source

pub fn as_slice_mut(&self) -> Slice<Vector<ES, N>, ReadWrite>

Returns the tile as an offset slice. Should only be used when swizzling is definitely not applicable.

Source

pub fn __expand_as_slice_mut( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <Slice<Vector<ES, N>, ReadWrite> as CubeType>::ExpandType

Source§

impl<ES: Numeric, N: Size, IO: SliceVisibility> StridedTile<ES, N, IO>

Source

pub fn get_vector( &self, coor_strided: u32, coor_contiguous: u32, ) -> Vector<ES, N>

Returns a specific vector from the tile based on coordinates.

Source

pub fn stage_offset(&self, relative_offset: u32) -> u32

Source

pub fn with_vector_size<N2: Size>(&self) -> StridedTile<ES, N2, IO>

Source

pub fn __expand_get_vector( scope: &mut Scope, this: <Self as CubeType>::ExpandType, coor_strided: <u32 as CubeType>::ExpandType, coor_contiguous: <u32 as CubeType>::ExpandType, ) -> <Vector<ES, N> as CubeType>::ExpandType

Source

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

Source

pub fn __expand_with_vector_size<N2: Size>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <StridedTile<ES, N2, IO> as CubeType>::ExpandType

Trait Implementations§

Source§

impl<ES: Clone + Numeric, N: Clone + Size, IO: Clone + SliceVisibility> Clone for StridedTile<ES, N, IO>

Source§

fn clone(&self) -> StridedTile<ES, N, IO>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<ES: Numeric, N: Size, IO: SliceVisibility> CubeType for StridedTile<ES, N, IO>

Source§

impl<ES: Copy + Numeric, N: Copy + Size, IO: Copy + SliceVisibility> Copy for StridedTile<ES, N, IO>

Auto Trait Implementations§

§

impl<ES, N, IO> Freeze for StridedTile<ES, N, IO>

§

impl<ES, N, IO> RefUnwindSafe for StridedTile<ES, N, IO>

§

impl<ES, N, IO> Send for StridedTile<ES, N, IO>

§

impl<ES, N, IO> Sync for StridedTile<ES, N, IO>

§

impl<ES, N, IO> Unpin for StridedTile<ES, N, IO>
where IO: Unpin, ES: Unpin, N: Unpin,

§

impl<ES, N, IO> UnsafeUnpin for StridedTile<ES, N, IO>

§

impl<ES, N, IO> UnwindSafe for StridedTile<ES, N, IO>
where IO: UnwindSafe, ES: UnwindSafe, N: 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<C> CloneExpand for C
where C: Clone,

Source§

fn __expand_clone_method(&self, _scope: &mut Scope) -> C

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> TuneInputs for T
where T: Clone + Send + Sync + 'static,

Source§

type At<'a> = T

The concrete input type at lifetime 'a.