pub struct Stages<T: CubeType> { /* private fields */ }Expand description
The depth slots of one buffered walk and the operands they are filled from.
Implementations§
Source§impl Stages<OperandPair>
impl Stages<OperandPair>
Sourcepub fn consume_async<S: AsyncStage>(&mut self, walk: &Walk, stage: &S)
pub fn consume_async<S: AsyncStage>(&mut self, walk: &Walk, stage: &S)
A compute plane’s side of walk, whose stages the filling planes fill by TMA: each stage
issued through stage, and its slot freed only once what it issued completes. That is a
stage later, so the reads of the previous stage run on beside the ones just issued, where
the ring holds more than one slot; a ring of one waits for them at once.
Sourcepub fn __expand_consume_async<S: AsyncStage>(
scope: &Scope,
this: &mut <Self as CubeType>::ExpandType,
walk: &<Walk as CubeType>::ExpandType,
stage: &<S as CubeType>::ExpandType,
)
pub fn __expand_consume_async<S: AsyncStage>( scope: &Scope, this: &mut <Self as CubeType>::ExpandType, walk: &<Walk as CubeType>::ExpandType, stage: &<S as CubeType>::ExpandType, )
A compute plane’s side of walk, whose stages the filling planes fill by TMA: each stage
issued through stage, and its slot freed only once what it issued completes. That is a
stage later, so the reads of the previous stage run on beside the ones just issued, where
the ring holds more than one slot; a ring of one waits for them at once.
Source§impl<T: CubeType> Stages<T>
impl<T: CubeType> Stages<T>
Sourcepub fn role(&self) -> Role
pub fn role(&self) -> Role
What this plane does with the stages’ slots; filler planes sit at the end of the cube.
Sourcepub fn __expand_role(
scope: &Scope,
this: &<Self as CubeType>::ExpandType,
) -> <Role as CubeType>::ExpandType
pub fn __expand_role( scope: &Scope, this: &<Self as CubeType>::ExpandType, ) -> <Role as CubeType>::ExpandType
What this plane does with the stages’ slots; filler planes sit at the end of the cube.
Sourcepub fn __expand_slot_mut<'infer, 'scope>(
scope: &'scope Scope,
this: &'infer mut <Self as CubeType>::ExpandType,
index: usize,
) -> &'infer mut <Slot<T> as CubeType>::ExpandType
pub fn __expand_slot_mut<'infer, 'scope>( scope: &'scope Scope, this: &'infer mut <Self as CubeType>::ExpandType, index: usize, ) -> &'infer mut <Slot<T> as CubeType>::ExpandType
Slot index, known at comptime.
Source§impl<P: Payload<P> + Clone + CubeType<ExpandType: Clone>> Stages<P>
impl<P: Payload<P> + Clone + CubeType<ExpandType: Clone>> Stages<P>
Sourcepub fn free(&self)
pub fn free(&self)
Free the shared memory every slot holds, for what the kernel declares after it to take:
once the walk is over, nothing reads a stage again. Every unit of the cube reaches it, and
a cube barrier comes before any unit touches what is declared in its place, as
Tile::smem_accumulation and Tile::smem_cyclic_accumulation open with.
Sourcepub fn fill(&mut self, slot: usize, region: &Region)
pub fn fill(&mut self, slot: usize, region: &Region)
Fill slot slot from region’s window: one step of a Fill plane’s walk.
Sourcepub fn __expand_free(scope: &Scope, this: &<Self as CubeType>::ExpandType)
pub fn __expand_free(scope: &Scope, this: &<Self as CubeType>::ExpandType)
Free the shared memory every slot holds, for what the kernel declares after it to take:
once the walk is over, nothing reads a stage again. Every unit of the cube reaches it, and
a cube barrier comes before any unit touches what is declared in its place, as
Tile::smem_accumulation and Tile::smem_cyclic_accumulation open with.
Sourcepub fn __expand_fill(
scope: &Scope,
this: &mut <Self as CubeType>::ExpandType,
slot: usize,
region: &<Region as CubeType>::ExpandType,
)
pub fn __expand_fill( scope: &Scope, this: &mut <Self as CubeType>::ExpandType, slot: usize, region: &<Region as CubeType>::ExpandType, )
Fill slot slot from region’s window: one step of a Fill plane’s walk.
Source§impl Stages<OperandPair>
impl Stages<OperandPair>
Sourcepub fn smem(
walk: &Walk,
lhs: &Tile,
rhs: &Tile,
storage: StageStorage,
depth: usize,
decoded: Option<ElemType>,
) -> Stages<OperandPair>
pub fn smem( walk: &Walk, lhs: &Tile, rhs: &Tile, storage: StageStorage, depth: usize, decoded: Option<ElemType>, ) -> Stages<OperandPair>
The depth slots staging both operands of a contraction into shared memory laid out as
storage.
A stage whose fill decodes its operand, from scales, a codebook or fields as wide as their
word, holds the values at decoded, or at f32 where None. An operand staged as it lies
keeps its own element.
Sourcepub fn __expand_smem(
scope: &Scope,
walk: &<Walk as CubeType>::ExpandType,
lhs: &<Tile as CubeType>::ExpandType,
rhs: &<Tile as CubeType>::ExpandType,
storage: StageStorage,
depth: usize,
decoded: Option<ElemType>,
) -> <Stages<OperandPair> as CubeType>::ExpandType
pub fn __expand_smem( scope: &Scope, walk: &<Walk as CubeType>::ExpandType, lhs: &<Tile as CubeType>::ExpandType, rhs: &<Tile as CubeType>::ExpandType, storage: StageStorage, depth: usize, decoded: Option<ElemType>, ) -> <Stages<OperandPair> as CubeType>::ExpandType
The depth slots staging both operands of a contraction into shared memory laid out as
storage.
A stage whose fill decodes its operand, from scales, a codebook or fields as wide as their
word, holds the values at decoded, or at f32 where None. An operand staged as it lies
keeps its own element.
Source§impl Stages<Tile>
impl Stages<Tile>
Sourcepub fn smem_single(
walk: &Walk,
input: &Tile,
storage: StageStorage,
depth: usize,
decoded: Option<ElemType>,
) -> Stages<Tile>
pub fn smem_single( walk: &Walk, input: &Tile, storage: StageStorage, depth: usize, decoded: Option<ElemType>, ) -> Stages<Tile>
smem for the sole operand input.
Sourcepub fn smem_single_at(
walk: &Walk,
input: &Tile,
storage: StageStorage,
width: Option<usize>,
depth: usize,
decoded: Option<ElemType>,
) -> Stages<Tile>
pub fn smem_single_at( walk: &Walk, input: &Tile, storage: StageStorage, width: Option<usize>, depth: usize, decoded: Option<ElemType>, ) -> Stages<Tile>
smem_single with the stage served in width-wide lines.
Sourcepub fn __expand_smem_single(
scope: &Scope,
walk: &<Walk as CubeType>::ExpandType,
input: &<Tile as CubeType>::ExpandType,
storage: StageStorage,
depth: usize,
decoded: Option<ElemType>,
) -> <Stages<Tile> as CubeType>::ExpandType
pub fn __expand_smem_single( scope: &Scope, walk: &<Walk as CubeType>::ExpandType, input: &<Tile as CubeType>::ExpandType, storage: StageStorage, depth: usize, decoded: Option<ElemType>, ) -> <Stages<Tile> as CubeType>::ExpandType
smem for the sole operand input.
Sourcepub fn __expand_smem_single_at(
scope: &Scope,
walk: &<Walk as CubeType>::ExpandType,
input: &<Tile as CubeType>::ExpandType,
storage: StageStorage,
width: Option<usize>,
depth: usize,
decoded: Option<ElemType>,
) -> <Stages<Tile> as CubeType>::ExpandType
pub fn __expand_smem_single_at( scope: &Scope, walk: &<Walk as CubeType>::ExpandType, input: &<Tile as CubeType>::ExpandType, storage: StageStorage, width: Option<usize>, depth: usize, decoded: Option<ElemType>, ) -> <Stages<Tile> as CubeType>::ExpandType
smem_single with the stage served in width-wide lines.
Source§impl Stages<OperandPair>
impl Stages<OperandPair>
Source§impl Stages<OperandPair>
impl Stages<OperandPair>
Source§impl Stages<OperandPair>
impl Stages<OperandPair>
Sourcepub fn prefetched<F>(&mut self, _walk: Walk, _compute: F)
pub fn prefetched<F>(&mut self, _walk: Walk, _compute: F)
pipelined with the next region’s loads held in registers across the
current contraction.
Requires depth 1 or 2, every unit copying straight from a plain operand, and loads within
Prefetch::fits; otherwise refused at expansion. Fixed operands, and operands whose
stages keep their scales beside them, fall back to pipelined.
Trait Implementations§
Auto Trait Implementations§
impl<T> !Send for Stages<T>
impl<T> !Sync for Stages<T>
impl<T> Freeze for Stages<T>
impl<T> RefUnwindSafe for Stages<T>
impl<T> Unpin for Stages<T>
impl<T> UnsafeUnpin for Stages<T>
impl<T> UnwindSafe for Stages<T>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more