Skip to main content

Mojo struct

PerKConsumerStage

@register_passable(trivial) struct PerKConsumerStage[_mlir_origin: LITMutOrigin, //, origin: MutOrigin, num_stages: Int, stage_stride_cols: Int, cta_group: Int]

Context manager for per-K epilogue consumption.

enter: Acquires stage, waits for MMA to complete this K iteration exit: Signals consumer barrier to release stage for MMA reuse

IMPORTANT: Unlike standard per-tile consumption, per-K consumption must signal the consumer barrier explicitly. The MMA warp waits on this barrier before each K iteration, so we must signal after each K iteration.

Fields

  • pipeline_ptr (Pointer[PerKConsumerStage[origin, num_stages, stage_stride_cols, cta_group].TilePipelineType, origin]):
  • stage (PerKConsumerStage[origin, num_stages, stage_stride_cols, cta_group].Stage):

Implemented traits

AnyType, Copyable, ImplicitlyCopyable, ImplicitlyDestructible, Movable, RegisterPassable, TrivialRegisterPassable

comptime members

__copyinit__is_trivial

comptime __copyinit__is_trivial = True

__del__is_trivial

comptime __del__is_trivial = True

__moveinit__is_trivial

comptime __moveinit__is_trivial = True

Stage

comptime Stage = OutputStage[num_stages, stage_stride_cols, cta_group]

TilePipelineType

comptime TilePipelineType = OutputTilePipeline[num_stages, stage_stride_cols, cta_group]

Methods

__init__

__init__(pipeline_ptr: Pointer[PerKConsumerStage[origin, num_stages, stage_stride_cols, cta_group].TilePipelineType, origin]) -> Self

__enter__

__enter__(mut self) -> PerKConsumerStage[origin, num_stages, stage_stride_cols, cta_group].Stage

Returns:

PerKConsumerStage

__exit__

__exit__(mut self)

Was this page helpful?