pub enum StageStorage {
Tiled {
block: Vec<(Axis, usize)>,
chunks: RowChunks,
},
Strided,
Lines {
read: UnitRead,
},
}Expand description
Where a stage lives and how it lays its cells out, stated at
Stages::smem.
Variants§
Tiled
Shared memory grouped into block-sized tiles, one edge per axis of the operation.
Strided
Lines
The plane’s units, one line per unit.
Implementations§
Source§impl StageStorage
impl StageStorage
Sourcepub fn tma_swizzle(
&self,
space: &Space,
vector_size: usize,
elem_bits: usize,
) -> Result<TensorMapSwizzle, Refusal>
pub fn tma_swizzle( &self, space: &Space, vector_size: usize, elem_bits: usize, ) -> Result<TensorMapSwizzle, Refusal>
The swizzle a TMA descriptor moving the whole of a stage over space in one box lands its
rows with, so they lie as this storage keeps them: the stage’s lines vector_size values of
elem_bits bits, which a line holds whole bytes of (a packed operand’s line is its words).
What the launch builds the descriptor with, and what the stage fill holds the stage to.
§Errors
Blocks splitting a row, which a box lands whole; blocks stacking a number of rows the swizzle’s period of rows does not divide, whose rows a box keys off their place in the stage rather than in the block; padded rows, which a box lands dense, and swizzled rows longer than a descriptor swizzle spans.
Sourcepub fn bytes(
&self,
space: &Space,
vector_size: usize,
elem_bits: usize,
) -> usize
pub fn bytes( &self, space: &Space, vector_size: usize, elem_bits: usize, ) -> usize
Bytes a stage over space holds laid out this way, its lines vector_size values of
elem_bits bits, which a line holds whole bytes of: every line of its cells, and the
padding after each row. What Stages::smem allocates for it.
Trait Implementations§
Source§impl Clone for StageStorage
impl Clone for StageStorage
Source§impl Debug for StageStorage
impl Debug for StageStorage
impl Eq for StageStorage
Source§impl Hash for StageStorage
impl Hash for StageStorage
Source§impl PartialEq for StageStorage
impl PartialEq for StageStorage
impl StructuralPartialEq for StageStorage
Auto Trait Implementations§
impl Freeze for StageStorage
impl RefUnwindSafe for StageStorage
impl Send for StageStorage
impl Sync for StageStorage
impl Unpin for StageStorage
impl UnsafeUnpin for StageStorage
impl UnwindSafe for StageStorage
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,
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