pub struct Im2colLayout {
pub shape_out: Sequence<FastDivmod<u32>>,
pub padded_channels: FastDivmod<u32>,
pub rows: u32,
pub cols: u32,
pub params: ConvolutionParams,
pub config: GlobalLayoutConfig,
}Expand description
Maps a 4D NHWC tensor to a 2D column matrix using the im2col transformation
It first decomposes the (m, k) matrix into ((n, out_h, out_w), (k_h, k_w, c)), then applies
the convolution parameters to calculate the position in the input tensor for that kernel element.
Fields§
§shape_out: Sequence<FastDivmod<u32>>Shape of output DHW
padded_channels: FastDivmod<u32>Shape of channel, for decomposing k
rows: u32Shape of the combined m dimension, including padding
cols: u32Shape of the combined k dimension, including padding
params: ConvolutionParamsComptime parameters for the convolution
config: GlobalLayoutConfigGlobal memory config for the backing tensor
Implementations§
Source§impl Im2colLayout
impl Im2colLayout
pub fn new<G: GlobalConfig>( rows: u32, cols: u32, padded_channels: FastDivmod<u32>, shape_out: Sequence<FastDivmod<u32>>, config: GlobalLayoutConfig, params: ConvolutionParams, ) -> Im2colLayout
pub fn __expand_new<G: GlobalConfig>( scope: &Scope, rows: <u32 as CubeType>::ExpandType, cols: <u32 as CubeType>::ExpandType, padded_channels: <FastDivmod<u32> as CubeType>::ExpandType, shape_out: <Sequence<FastDivmod<u32>> as CubeType>::ExpandType, config: GlobalLayoutConfig, params: ConvolutionParams, ) -> <Im2colLayout as CubeType>::ExpandType
Trait Implementations§
Source§impl Clone for Im2colLayout
impl Clone for Im2colLayout
Source§fn clone(&self) -> Im2colLayout
fn clone(&self) -> Im2colLayout
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 Im2colLayout
impl CubeType for Im2colLayout
Source§impl LaunchArg for Im2colLayout
impl LaunchArg for Im2colLayout
Source§type RuntimeArg<R: Runtime> = Im2colLayoutLaunch<R>
type RuntimeArg<R: Runtime> = Im2colLayoutLaunch<R>
The runtime argument for the kernel.
Source§type CompilationArg = Im2colLayoutCompilationArg
type CompilationArg = Im2colLayoutCompilationArg
Compilation argument.
fn register<R: Runtime>( arg: Self::RuntimeArg<R>, launcher: &mut KernelLauncher<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 a variable during compilation that fill the
KernelBuilder.Source§impl Layout for Im2colLayout
impl Layout for Im2colLayout
Source§type Coordinates = (usize, u32, u32)
type Coordinates = (usize, u32, 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 = NhwcCoords
type SourceCoordinates = NhwcCoords
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) -> NhwcCoords
fn to_source_pos(&self, pos: Self::Coordinates) -> NhwcCoords
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 vectors
at the lowest level (global memory layout).
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.
Source§fn to_source_pos_checked(&self, pos: Self::Coordinates) -> (NhwcCoords, bool)
fn to_source_pos_checked(&self, pos: Self::Coordinates) -> (NhwcCoords, 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::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <Self::SourceCoordinates as CubeType>::ExpandType
fn __expand_to_source_pos_checked( scope: &Scope, this: &Self::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> (<Self::SourceCoordinates as CubeType>::ExpandType, <bool as CubeType>::ExpandType)
fn __expand_shape( scope: &Scope, this: &Self::ExpandType, ) -> <Self::Coordinates as CubeType>::ExpandType
fn __expand_is_in_bounds( scope: &Scope, this: &Self::ExpandType, pos: <Self::Coordinates as CubeType>::ExpandType, ) -> <bool as CubeType>::ExpandType
Auto Trait Implementations§
impl Freeze for Im2colLayout
impl RefUnwindSafe for Im2colLayout
impl Send for Im2colLayout
impl Sync for Im2colLayout
impl Unpin for Im2colLayout
impl UnsafeUnpin for Im2colLayout
impl UnwindSafe for Im2colLayout
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 moreimpl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> TuneInputs for T
impl<T> TuneInputs for T
Source§impl<T> ViewLayoutLaunchArg for T
impl<T> ViewLayoutLaunchArg for T
Source§type RuntimeArg<R: Runtime> = <T as LaunchArg>::RuntimeArg<R>
type RuntimeArg<R: Runtime> = <T as LaunchArg>::RuntimeArg<R>
The runtime argument for the kernel.
Source§type CompilationArg = <T as LaunchArg>::CompilationArg
type CompilationArg = <T as LaunchArg>::CompilationArg
Compilation argument.
fn register<R, B>( arg: <T as ViewLayoutLaunchArg>::RuntimeArg<R>, _buffer: &B, _ty: Type, launcher: &mut KernelLauncher<R>, ) -> <T as ViewLayoutLaunchArg>::CompilationArg
Source§fn expand(
arg: &<T as ViewLayoutLaunchArg>::CompilationArg,
_ty: Type,
builder: &mut KernelBuilder,
) -> <T as CubeType>::ExpandType
fn expand( arg: &<T as ViewLayoutLaunchArg>::CompilationArg, _ty: Type, builder: &mut KernelBuilder, ) -> <T as CubeType>::ExpandType
Register an input variable during compilation that fill the
KernelBuilder.Source§fn expand_output(
arg: &Self::CompilationArg,
ty: Type,
builder: &mut KernelBuilder,
) -> Self::ExpandType
fn expand_output( arg: &Self::CompilationArg, ty: Type, builder: &mut KernelBuilder, ) -> Self::ExpandType
Register an output variable during compilation that fill the
KernelBuilder.