pub enum LinearLayout {
    Plain(PlainLayout),
    Strided(StridedLayout),
    Permuted(PermutedLayout),
}Expand description
Maps a linear index based on line count to a potentially strided tensor. Only applies the necessary level of striding, either none, only the last dim (for freshly allocated strided tensors), or all dimensions.
Treats indices as the line index, with the shape being adjusted for line size.
Layout version of [index_offset_contiguous]
Variants§
Plain(PlainLayout)
Input is contiguous, no mapping
Strided(StridedLayout)
Strided tensor, i.e. freshly allocated but not permuted
Permuted(PermutedLayout)
Permuted layout, tracks the entire shape/strides and not just the last dim
Implementations§
Source§impl LinearLayout
 
impl LinearLayout
pub fn new_Plain(_0: PlainLayout) -> Self
pub fn __expand_new_Plain( _: &mut Scope, _0: <PlainLayout as CubeType>::ExpandType, ) -> LinearLayoutExpand
pub fn new_Strided(_0: StridedLayout) -> Self
pub fn __expand_new_Strided( _: &mut Scope, _0: <StridedLayout as CubeType>::ExpandType, ) -> LinearLayoutExpand
pub fn new_Permuted(_0: PermutedLayout) -> Self
pub fn __expand_new_Permuted( _: &mut Scope, _0: <PermutedLayout as CubeType>::ExpandType, ) -> LinearLayoutExpand
Trait Implementations§
Source§impl Clone for LinearLayout
 
impl Clone for LinearLayout
Source§fn clone(&self) -> LinearLayout
 
fn clone(&self) -> LinearLayout
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreSource§impl CubeDebug for LinearLayout
 
impl CubeDebug for LinearLayout
Source§fn set_debug_name(&self, scope: &mut Scope, name: &'static str)
 
fn set_debug_name(&self, scope: &mut Scope, name: &'static str)
Set the debug name of this type’s expansion. Should do nothing for types that don’t appear
at runtime
Source§impl CubeType for LinearLayout
 
impl CubeType for LinearLayout
type ExpandType = LinearLayoutExpand
Source§fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType
 
fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType
Wrapper around the init method, necessary to type inference.
Source§impl LaunchArg for LinearLayout
 
impl LaunchArg for LinearLayout
Source§type RuntimeArg<'a, R: Runtime> = LinearLayoutArgs<'a, R>
 
type RuntimeArg<'a, R: Runtime> = LinearLayoutArgs<'a, R>
The runtime argument for the kernel.
Source§type CompilationArg = LinearLayoutCompilationArg
 
type CompilationArg = LinearLayoutCompilationArg
Compilation argument.
fn compilation_arg<'a, R: Runtime>( runtime_arg: &Self::RuntimeArg<'a, R>, ) -> Self::CompilationArg
Source§fn expand(
    arg: &Self::CompilationArg,
    builder: &mut KernelBuilder,
) -> <Self as CubeType>::ExpandType
 
fn expand( arg: &Self::CompilationArg, builder: &mut KernelBuilder, ) -> <Self as CubeType>::ExpandType
Register an input variable during compilation that fill the KernelBuilder.
Source§fn expand_output(
    arg: &Self::CompilationArg,
    builder: &mut KernelBuilder,
) -> <Self as CubeType>::ExpandType
 
fn expand_output( arg: &Self::CompilationArg, builder: &mut KernelBuilder, ) -> <Self as CubeType>::ExpandType
Register an output variable during compilation that fill the KernelBuilder.
Source§impl Layout for LinearLayout
 
impl Layout for LinearLayout
Source§type Coordinates = u32
 
type Coordinates = 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 = u32
 
type SourceCoordinates = 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(&self, pos: Self::Coordinates) -> u32
 
fn to_source_pos(&self, pos: Self::Coordinates) -> u32
Transform a set of n-dimensional coordinates to a source coordinate space.
It is recommended to use absolute positions here, and handle the translation into lines
at the lowest level (global memory layout).
Source§fn to_source_pos_checked(&self, pos: Self::Coordinates) -> (u32, bool)
 
fn to_source_pos_checked(&self, pos: Self::Coordinates) -> (u32, 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 shape(&self) -> Self::Coordinates
 
fn shape(&self) -> Self::Coordinates
The shape of the conceptual tensor represented by this layout. Not necessarily the extent
of the underlying storage, but only this view of it.
fn is_in_bounds(&self, pos: Self::Coordinates) -> bool
fn __expand_to_source_pos( scope: &mut Scope, this: <Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <Self::SourceCoordinates as CubeType>::ExpandType
fn __expand_to_source_pos_checked( scope: &mut Scope, this: <Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <(Self::SourceCoordinates, bool) as CubeType>::ExpandType
fn __expand_shape( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <Self::Coordinates as CubeType>::ExpandType
fn __expand_is_in_bounds( scope: &mut Scope, this: <Self as CubeType>::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <bool as CubeType>::ExpandType
Auto Trait Implementations§
impl Freeze for LinearLayout
impl RefUnwindSafe for LinearLayout
impl Send for LinearLayout
impl Sync for LinearLayout
impl Unpin for LinearLayout
impl UnwindSafe for LinearLayout
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