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>
impl<ES: Numeric, T: TilingLayout> StridedStage<ES, T>
Sourcepub fn new(ident: StageIdent, config: StageMemoryConfig) -> StridedStage<ES, T>
pub fn new(ident: StageIdent, config: StageMemoryConfig) -> StridedStage<ES, T>
Instantiate a new stage memory for the given identifier
Sourcepub fn new_aligned(
ident: StageIdent,
alignment: u32,
config: StageMemoryConfig,
) -> StridedStage<ES, T>
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
Sourcepub fn new_with_smem(
smem: SharedMemory<Line<ES>>,
ident: StageIdent,
config: StageMemoryConfig,
) -> StridedStage<ES, T>
pub fn new_with_smem( smem: SharedMemory<Line<ES>>, ident: StageIdent, config: StageMemoryConfig, ) -> StridedStage<ES, T>
Instantiate with a custom shared memory
pub fn with_buffer_index(&self, buffer_idx: u32) -> Self
Sourcepub fn get_tile(&self, tile: Coords2d) -> StridedTile<ES>
pub fn get_tile(&self, tile: Coords2d) -> StridedTile<ES>
Get the tile at position (row, col)
Sourcepub fn get_tile_mut(&self, tile: Coords2d) -> StridedTile<ES, ReadWrite>
pub fn get_tile_mut(&self, tile: Coords2d) -> StridedTile<ES, ReadWrite>
Get the tile at position (row, col)
Sourcepub fn as_slice(&self, line_size: u32) -> Slice<Line<ES>>
pub fn as_slice(&self, line_size: u32) -> Slice<Line<ES>>
Return the whole stage as a slice, for reading
Sourcepub fn as_slice_mut(&mut self, line_size: u32) -> SliceMut<Line<ES>>
pub fn as_slice_mut(&mut self, line_size: u32) -> SliceMut<Line<ES>>
Return the whole stage as a mutable slice, for loading
Sourcepub fn clear_all<G: GlobalConfig>(&mut self, ident: MatmulIdent, config: G)
pub fn clear_all<G: GlobalConfig>(&mut self, ident: MatmulIdent, config: G)
Zero out the shared memory Available for matmul only
Sourcepub fn clear_stage<G: GlobalConfig>(
&mut self,
stage_buffer: StageBuffer,
ident: MatmulIdent,
config: G,
)
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
Sourcepub unsafe fn free(self)
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
pub fn __expand_new( scope: &mut Scope, ident: StageIdent, config: StageMemoryConfig, ) -> <StridedStage<ES, T> as CubeType>::ExpandType
pub fn __expand_new_aligned( scope: &mut Scope, ident: StageIdent, alignment: u32, config: StageMemoryConfig, ) -> <StridedStage<ES, T> as CubeType>::ExpandType
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
pub fn __expand_with_buffer_index( scope: &mut Scope, this: <Self as CubeType>::ExpandType, buffer_idx: <u32 as CubeType>::ExpandType, ) -> <Self as CubeType>::ExpandType
pub fn __expand_get_tile( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES> as CubeType>::ExpandType
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
pub fn __expand_as_slice( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <Slice<Line<ES>> as CubeType>::ExpandType
pub fn __expand_as_slice_mut( scope: &mut Scope, this: <Self as CubeType>::ExpandType, line_size: u32, ) -> <SliceMut<Line<ES>> as CubeType>::ExpandType
pub fn __expand_clear_all<G: GlobalConfig>( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ident: MatmulIdent, config: G, ) -> <() as CubeType>::ExpandType
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
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>
impl<ES: Clone + Numeric, T: Clone + TilingLayout> Clone for StridedStage<ES, T>
Source§fn clone(&self) -> StridedStage<ES, T>
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<ES: Numeric, T: TilingLayout> CubeType for StridedStage<ES, T>
impl<ES: Numeric, T: TilingLayout> CubeType for StridedStage<ES, T>
type ExpandType = StridedStageExpand<ES, T>
Source§fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType
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>
impl<ES: Numeric, T: TilingLayout> Stage<ES, ReadOnly> for StridedStage<ES, T>
Source§fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES>
fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES>
Slices a tile with offset (
row, col) from the stage and returns itfn __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>
impl<ES: Numeric, T: TilingLayout> Stage<ES, ReadWrite> for StridedStage<ES, T>
Source§fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES, ReadWrite>
fn tile(this: &Self, tile: Coords2d) -> StridedTile<ES, ReadWrite>
Slices a tile with offset (
row, col) from the stage and returns itfn __expand_tile( scope: &mut Scope, this: <Self as CubeType>::ExpandType, tile: <Coords2d as CubeType>::ExpandType, ) -> <StridedTile<ES, ReadWrite> as CubeType>::ExpandType
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>where
T: RefUnwindSafe,
ES: RefUnwindSafe,
impl<ES, T> Send for StridedStage<ES, T>
impl<ES, T> Sync for StridedStage<ES, T>
impl<ES, T> Unpin for StridedStage<ES, T>
impl<ES, T> UnwindSafe for StridedStage<ES, T>where
T: UnwindSafe,
ES: UnwindSafe,
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