pub struct Chain<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> { /* private fields */ }Expand description
Chain of layouts, can be used to launch with multiple layouts
Implementations§
Source§impl<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> Chain<L0, L1>
 
impl<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> Chain<L0, L1>
pub fn new(l0: L0, l1: L1) -> Self
pub fn __expand_new( scope: &mut Scope, l0: <L0 as CubeType>::ExpandType, l1: <L1 as CubeType>::ExpandType, ) -> <Self as CubeType>::ExpandType
Trait Implementations§
Source§impl<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> CubeType for Chain<L0, L1>
 
impl<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> CubeType for Chain<L0, L1>
type ExpandType = ChainExpand<L0, L1>
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<L0: Layout + LaunchArg, L1: Layout<SourceCoordinates = L0::Coordinates> + LaunchArg> LaunchArg for Chain<L0, L1>
 
impl<L0: Layout + LaunchArg, L1: Layout<SourceCoordinates = L0::Coordinates> + LaunchArg> LaunchArg for Chain<L0, L1>
Source§type RuntimeArg<'a, R: Runtime> = ChainLaunch<'a, L0, L1, R>
 
type RuntimeArg<'a, R: Runtime> = ChainLaunch<'a, L0, L1, R>
The runtime argument for the kernel.
Source§type CompilationArg = ChainCompilationArg<L0, L1>
 
type CompilationArg = ChainCompilationArg<L0, L1>
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<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> Layout for Chain<L0, L1>
 
impl<L0: Layout, L1: Layout<SourceCoordinates = L0::Coordinates>> Layout for Chain<L0, L1>
Source§type Coordinates = <L1 as Layout>::Coordinates
 
type Coordinates = <L1 as Layout>::Coordinates
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 = <L0 as Layout>::SourceCoordinates
 
type SourceCoordinates = <L0 as Layout>::SourceCoordinates
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) -> Self::SourceCoordinates
 
fn to_source_pos(&self, pos: Self::Coordinates) -> Self::SourceCoordinates
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).
fn is_in_bounds(&self, pos: Self::Coordinates) -> bool
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_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 __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<L0, L1> Freeze for Chain<L0, L1>where
    <L1 as CubeType>::ExpandType: Sized,
    <L0 as CubeType>::ExpandType: Sized,
    L0: Freeze,
    L1: Freeze,
impl<L0, L1> RefUnwindSafe for Chain<L0, L1>where
    <L1 as CubeType>::ExpandType: Sized,
    <L0 as CubeType>::ExpandType: Sized,
    L0: RefUnwindSafe,
    L1: RefUnwindSafe,
impl<L0, L1> Send for Chain<L0, L1>
impl<L0, L1> Sync for Chain<L0, L1>
impl<L0, L1> Unpin for Chain<L0, L1>where
    <L1 as CubeType>::ExpandType: Sized,
    <L0 as CubeType>::ExpandType: Sized,
    L0: Unpin,
    L1: Unpin,
impl<L0, L1> UnwindSafe for Chain<L0, L1>where
    <L1 as CubeType>::ExpandType: Sized,
    <L0 as CubeType>::ExpandType: Sized,
    L0: UnwindSafe,
    L1: UnwindSafe,
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