pub struct TiledLayout { /* private fields */ }Expand description
Tiling as a composable layout: splits each tiled axis into levels + 1
factors — one grid plus levels nested tile sizes — via a mixed-radix
decomposition, expanding logical rank R to physical rank R + levels * n. The
factors are read from the physical shape, laid out [pre, grid…, level1…, …, levelL…, post] (coarsest grid first, finest tile last). levels == 1 is a
single split c -> (c / T, c % T).
Implementations§
Source§impl TiledLayout
impl TiledLayout
pub fn new( physical_shape: CoordsDyn, start_axis: usize, num_tiled: usize, levels: usize, ) -> TiledLayout
pub fn __expand_new( scope: &Scope, physical_shape: <CoordsDyn as CubeType>::ExpandType, start_axis: usize, num_tiled: usize, levels: usize, ) -> <TiledLayout as CubeType>::ExpandType
Trait Implementations§
Source§impl Clone for TiledLayout
impl Clone for TiledLayout
Source§fn clone(&self) -> TiledLayout
fn clone(&self) -> TiledLayout
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl CubeType for TiledLayout
impl CubeType for TiledLayout
Source§impl Layout for TiledLayout
impl Layout for TiledLayout
Source§fn to_source_pos(&self, pos: Self::Coordinates) -> Self::SourceCoordinates
fn to_source_pos(&self, pos: Self::Coordinates) -> Self::SourceCoordinates
Logical coords to physical tile coords, laid out
[pre, grid…, level1…, …, levelL…, post]. Each tiled axis is decomposed
mixed-radix: the finest level (last block) is the least significant digit.
Source§fn shape(&self) -> Self::Coordinates
fn shape(&self) -> Self::Coordinates
Logical shape: each tiled axis collapses its levels + 1 factors back to
their product.
Source§type Coordinates = Sequence<u32>
type Coordinates = Sequence<u32>
The coordinate type used by the conceptual tensor represented by this layout, i.e.
(u32, u32, u32) for a fixed-rank 3D tensor.
This does not have to match the rank of the underlying storage (if applicable).
It’s only how the tensor is interpreted (viewed) by the code.Source§type SourceCoordinates = Sequence<u32>
type SourceCoordinates = Sequence<u32>
The coordinate type used by the inner storage wrapped in this layout, i.e.
u32 for
Array, or (u32, u32) for a 2D view.Source§fn to_source_pos_checked(
&self,
pos: Self::Coordinates,
) -> (Self::SourceCoordinates, bool)
fn to_source_pos_checked( &self, pos: Self::Coordinates, ) -> (Self::SourceCoordinates, bool)
Transform a set of n-dimensional coordinates to an offset into the underlying storage,
and return whether the position is in bounds of this layout.
See also
Layout::to_source_posfn is_in_bounds(&self, pos: Self::Coordinates) -> bool
fn __expand_to_source_pos( scope: &Scope, this: &<Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <Self::SourceCoordinates as CubeType>::ExpandType
fn __expand_to_source_pos_checked( scope: &Scope, this: &<Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> (<Self::SourceCoordinates as CubeType>::ExpandType, <bool as CubeType>::ExpandType)
fn __expand_shape( scope: &Scope, this: &<Self as CubeType>::ExpandType, ) -> <Self::Coordinates as CubeType>::ExpandType
fn __expand_is_in_bounds( scope: &Scope, this: &<Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <bool as CubeType>::ExpandType
Auto Trait Implementations§
impl Freeze for TiledLayout
impl RefUnwindSafe for TiledLayout
impl Send for TiledLayout
impl Sync for TiledLayout
impl Unpin for TiledLayout
impl UnsafeUnpin for TiledLayout
impl UnwindSafe for TiledLayout
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
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> 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>
Converts
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>
Converts
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