StridedStage

Struct StridedStage 

Source
pub struct StridedStage<ES: Numeric, T: TilingLayout> {
    pub smem: SharedMemory<Line<ES>>,
    /* private fields */
}
Expand description

Wrapper over the shared memory used for staging, abstracting its layout

Fields§

§smem: SharedMemory<Line<ES>>

Underlying shared memory

Implementations§

Source§

impl<ES: Numeric, T: TilingLayout> StridedStage<ES, T>

Source

pub fn new(ident: StageIdent, config: StageMemoryConfig) -> StridedStage<ES, T>

Instantiate a new stage memory for the given identifier

Source

pub fn new_aligned( ident: StageIdent, alignment: u32, config: StageMemoryConfig, ) -> StridedStage<ES, T>

Instantiate a new stage memory for the given identifier, with shared memory alignment

Source

pub fn new_with_smem( smem: SharedMemory<Line<ES>>, ident: StageIdent, config: StageMemoryConfig, ) -> StridedStage<ES, T>

Instantiate with a custom shared memory

Source

pub fn with_buffer_index(&self, buffer_idx: u32) -> Self

Source

pub fn get_tile(&self, tile: Coords2d) -> StridedTile<ES>

Get the tile at position (row, col)

Source

pub fn get_tile_mut(&self, tile: Coords2d) -> StridedTile<ES, ReadWrite>

Get the tile at position (row, col)

Source

pub fn as_slice(&self, line_size: u32) -> Slice<Line<ES>>

Return the whole stage as a slice, for reading

Source

pub fn as_slice_mut(&mut self, line_size: u32) -> SliceMut<Line<ES>>

Return the whole stage as a mutable slice, for loading

Source

pub fn clear_all<G: GlobalConfig>(&mut self, ident: MatmulIdent, config: G)

Zero out the shared memory Available for matmul only

Source

pub fn clear_stage<G: GlobalConfig>( &mut self, stage_buffer: StageBuffer, ident: MatmulIdent, config: G, )

Zero out the shared memory for only one stage Available for matmul only

Source

pub unsafe fn free(self)

Frees the shared memory for reuse, if possible on the target runtime.

§Safety

Must be used in uniform control flow Must not have any dangling references to this shared memory

Source

pub fn __expand_new( scope: &mut Scope, ident: StageIdent, config: StageMemoryConfig, ) -> <StridedStage<ES, T> as CubeType>::ExpandType

Source

pub fn __expand_new_aligned( scope: &mut Scope, ident: StageIdent, alignment: u32, config: StageMemoryConfig, ) -> <StridedStage<ES, T> as CubeType>::ExpandType

Source

pub fn __expand_new_with_smem( scope: &mut Scope, smem: <SharedMemory<Line<ES>> as CubeType>::ExpandType, ident: StageIdent, config: StageMemoryConfig, ) -> <StridedStage<ES, T> as CubeType>::ExpandType

Source

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

Source

pub fn __expand_get_tile( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES> as CubeType>::ExpandType

Source

pub fn __expand_get_tile_mut( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES, ReadWrite> as CubeType>::ExpandType

Source

pub fn __expand_as_slice( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <Slice<Line<ES>> as CubeType>::ExpandType

Source

pub fn __expand_as_slice_mut( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <SliceMut<Line<ES>> as CubeType>::ExpandType

Source

pub fn __expand_clear_all<G: GlobalConfig>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ident: MatmulIdent, config: G, ) -> <() as CubeType>::ExpandType

Source

pub fn __expand_clear_stage<G: GlobalConfig>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, stage_buffer: StageBuffer, ident: MatmulIdent, config: G, ) -> <() as CubeType>::ExpandType

Source

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

Trait Implementations§

Source§

impl<ES: Clone + Numeric, T: Clone + TilingLayout> Clone for StridedStage<ES, T>

Source§

fn clone(&self) -> StridedStage<ES, T>

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, T: TilingLayout> CubeType for StridedStage<ES, T>

Source§

type ExpandType = StridedStageExpand<ES, T>

Source§

fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType

Wrapper around the init method, necessary to type inference.
Source§

impl<ES: Numeric, T: TilingLayout> Stage<ES, ReadOnly> for StridedStage<ES, T>

Source§

type TileKind = Strided

The kind (or family) of the tiles contained in this stage
Source§

fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES>

Slices a tile with offset (row, col) from the stage and returns it
Source§

fn __expand_tile( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES> as CubeType>::ExpandType

Source§

impl<ES: Numeric, T: TilingLayout> Stage<ES, ReadWrite> for StridedStage<ES, T>

Source§

type TileKind = Strided

The kind (or family) of the tiles contained in this stage
Source§

fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES, ReadWrite>

Slices a tile with offset (row, col) from the stage and returns it
Source§

fn __expand_tile( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES, ReadWrite> as CubeType>::ExpandType

Source§

impl<ES: Copy + Numeric, T: Copy + TilingLayout> Copy for StridedStage<ES, T>

Auto Trait Implementations§

§

impl<ES, T> Freeze for StridedStage<ES, T>

§

impl<ES, T> RefUnwindSafe for StridedStage<ES, T>

§

impl<ES, T> Send for StridedStage<ES, T>

§

impl<ES, T> Sync for StridedStage<ES, T>

§

impl<ES, T> Unpin for StridedStage<ES, T>
where T: Unpin, ES: Unpin,

§

impl<ES, T> UnwindSafe for StridedStage<ES, T>
where T: UnwindSafe, ES: 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> 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> 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V