Skip to main content

TiledLayout

Struct TiledLayout 

Source
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

Source

pub fn new( physical_shape: CoordsDyn, start_axis: usize, num_tiled: usize, levels: usize, ) -> TiledLayout

Source

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

Source§

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)

Performs copy-assignment from source. Read more
Source§

impl CubeType for TiledLayout

Source§

impl Layout for TiledLayout

Source§

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

Logical shape: each tiled axis collapses its levels + 1 factors back to their product.

Source§

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>

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)

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_pos
Source§

fn is_in_bounds(&self, pos: Self::Coordinates) -> bool

Source§

fn __expand_to_source_pos( scope: &Scope, this: &<Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <Self::SourceCoordinates as CubeType>::ExpandType

Source§

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)

Source§

fn __expand_shape( scope: &Scope, this: &<Self as CubeType>::ExpandType, ) -> <Self::Coordinates as CubeType>::ExpandType

Source§

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§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneExpand for T
where T: Clone,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoComptime for T

Source§

fn comptime(self) -> Self

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> TuneInputs for T
where T: Clone + Send + Sync + 'static,

Source§

type At<'a> = T

The concrete input type at lifetime 'a.