pub struct AsyncBufferGlobalReader<IP: MatrixPrecision, S: StageConfig, CM: CopyMechanism, L: AsyncPartialLoadingStrategy> { /* private fields */ }Expand description
Loads a stage from stage memory using asynchronous data movement operations.
A complete load is referred to as a Job, which is divided into Tasks—
each Task represents a single data transfer for a specific unit
Implementations§
Source§impl<IP: MatrixPrecision, S: StageConfig, CM: CopyMechanism, L: AsyncPartialLoadingStrategy> AsyncBufferGlobalReader<IP, S, CM, L>
impl<IP: MatrixPrecision, S: StageConfig, CM: CopyMechanism, L: AsyncPartialLoadingStrategy> AsyncBufferGlobalReader<IP, S, CM, L>
Sourcepub fn new(
tensor: View<Line<IP::Global>, Coords2d>,
k_step: u32,
ident: MatmulIdent,
config: DoubleBufferingGlobalConfig<S>,
) -> Self
pub fn new( tensor: View<Line<IP::Global>, Coords2d>, k_step: u32, ident: MatmulIdent, config: DoubleBufferingGlobalConfig<S>, ) -> Self
Create a new AsyncBufferGlobalReader
Sourcepub fn stage(
&mut self,
stage_buffer: StageBuffer,
) -> StridedStage<IP::Stage, L::TilingLayout>
pub fn stage( &mut self, stage_buffer: StageBuffer, ) -> StridedStage<IP::Stage, L::TilingLayout>
Give a reader to the loaded stage memory.
Sourcepub fn advance_view(&mut self)
pub fn advance_view(&mut self)
Advance the view over global memory along the k dimension.
Sourcepub fn load_stage(
&mut self,
mechanism: &CM,
stage_buffer: StageBuffer,
config: DoubleBufferingGlobalConfig<S>,
)
pub fn load_stage( &mut self, mechanism: &CM, stage_buffer: StageBuffer, config: DoubleBufferingGlobalConfig<S>, )
Accomplish the entire job of loading data into the stage memory
Sourcepub fn clear_stage(
&mut self,
stage_buffer: StageBuffer,
config: DoubleBufferingGlobalConfig<S>,
)
pub fn clear_stage( &mut self, stage_buffer: StageBuffer, config: DoubleBufferingGlobalConfig<S>, )
Zero out the stage memory
pub fn __expand_new( scope: &mut Scope, tensor: <View<Line<IP::Global>, Coords2d> as CubeType>::ExpandType, k_step: <u32 as CubeType>::ExpandType, ident: MatmulIdent, config: DoubleBufferingGlobalConfig<S>, ) -> <Self as CubeType>::ExpandType
pub fn __expand_stage( scope: &mut Scope, this: <Self as CubeType>::ExpandType, stage_buffer: StageBuffer, ) -> <StridedStage<IP::Stage, L::TilingLayout> as CubeType>::ExpandType
pub fn __expand_advance_view( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <() as CubeType>::ExpandType
pub fn __expand_load_stage( scope: &mut Scope, this: <Self as CubeType>::ExpandType, mechanism: <CM as CubeType>::ExpandType, stage_buffer: StageBuffer, config: DoubleBufferingGlobalConfig<S>, ) -> <() as CubeType>::ExpandType
pub fn __expand_clear_stage( scope: &mut Scope, this: <Self as CubeType>::ExpandType, stage_buffer: StageBuffer, config: DoubleBufferingGlobalConfig<S>, ) -> <() as CubeType>::ExpandType
Trait Implementations§
Source§impl<IP: MatrixPrecision, S: StageConfig, CM: CopyMechanism, L: AsyncPartialLoadingStrategy> CubeType for AsyncBufferGlobalReader<IP, S, CM, L>
impl<IP: MatrixPrecision, S: StageConfig, CM: CopyMechanism, L: AsyncPartialLoadingStrategy> CubeType for AsyncBufferGlobalReader<IP, S, CM, L>
type ExpandType = AsyncBufferGlobalReaderExpand<IP, S, CM, L>
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.
Auto Trait Implementations§
impl<IP, S, CM, L> Freeze for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: Freeze,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: Freeze,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: Freeze,
PhantomData<(S, CM)>: Freeze,
impl<IP, S, CM, L> RefUnwindSafe for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: RefUnwindSafe,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: RefUnwindSafe,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: RefUnwindSafe,
PhantomData<(S, CM)>: RefUnwindSafe,
impl<IP, S, CM, L> Send for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: Send,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: Send,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: Send,
PhantomData<(S, CM)>: Send,
impl<IP, S, CM, L> Sync for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: Sync,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: Sync,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: Sync,
PhantomData<(S, CM)>: Sync,
impl<IP, S, CM, L> Unpin for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: Unpin,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: Unpin,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: Unpin,
PhantomData<(S, CM)>: Unpin,
impl<IP, S, CM, L> UnsafeUnpin for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: UnsafeUnpin,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: UnsafeUnpin,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: UnsafeUnpin,
PhantomData<(S, CM)>: UnsafeUnpin,
impl<IP, S, CM, L> UnwindSafe for AsyncBufferGlobalReader<IP, S, CM, L>where
GlobalIterator<Line<<IP as MatrixPrecision>::Global>>: UnwindSafe,
StridedStage<<IP as MatrixPrecision>::Stage, <L as AsyncPartialLoadingStrategy>::TilingLayout>: UnwindSafe,
CubeOption<(<L as AsyncPartialLoadingStrategy>::Job<IP>, <L as AsyncPartialLoadingStrategy>::Job<IP>)>: UnwindSafe,
PhantomData<(S, CM)>: 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