pub enum StageLayout {
Strided,
PaddedRows,
Blocks,
PaddedBlocks,
SwizzledBlocks,
}Expand description
How a stage’s rows lie over the shared memory banks.
Where a row spans a whole number of the banks’ 128 bytes, as a head dim or a step of K of 64
or 128 in f16 does, a matrix instruction, loading the same columns of several rows at once,
reads one bank several times over. Padding each row by a chunk starts the next row on other
banks, at a chunk a row; blocking the stage into the instruction’s tiles packs one tile’s rows
into consecutive bytes instead, at none, and swizzling a tile’s chunks spreads its rows over the
banks in place, also at none. Which reads faster is the device’s to say, so each is a setting.
Variants§
Strided
Row-major over the whole stage, the rows in order.
PaddedRows
Row-major over the whole stage, each row one chunk longer.
Blocks
In tiles of the instruction, one after another, their rows in order.
PaddedBlocks
In tiles of the instruction, each of their rows one chunk longer.
SwizzledBlocks
In tiles of the instruction, each row’s chunks swizzled: what a fragment reads that hands every row its own address, as the tile DSL’s own transport does; a cmma fragment reads a tile off a pointer and a stride, and cannot.
Implementations§
Source§impl StageLayout
impl StageLayout
Trait Implementations§
Source§impl Clone for StageLayout
impl Clone for StageLayout
impl Copy for StageLayout
Source§impl Debug for StageLayout
impl Debug for StageLayout
Source§impl Display for StageLayout
Nothing for the strided layout, so the settings that hold it keep their names.
impl Display for StageLayout
Nothing for the strided layout, so the settings that hold it keep their names.
impl Eq for StageLayout
Source§impl Hash for StageLayout
impl Hash for StageLayout
Source§impl PartialEq for StageLayout
impl PartialEq for StageLayout
impl StructuralPartialEq for StageLayout
Auto Trait Implementations§
impl Freeze for StageLayout
impl RefUnwindSafe for StageLayout
impl Send for StageLayout
impl Sync for StageLayout
impl Unpin for StageLayout
impl UnsafeUnpin for StageLayout
impl UnwindSafe for StageLayout
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> CloneExpand for Twhere
T: Clone,
impl<T> CloneExpand for Twhere
T: Clone,
fn __expand_clone_method(&self, _: &Scope) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CompilationArg for T
impl<T> CompilationArg for T
Source§fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
impl<T> CubeComptime for T
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.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
Source§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.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