Skip to main content

Mojo struct

OutputKPipeline

struct OutputKPipeline[origin: MutOrigin, opc: OutputPipelineConfig]

Per-K-iteration view of OutputTilePipeline.

Unlike standard producer()/consumer() which signal once per tile (after all K iterations), this view signals after each K iteration. Use for kernels with per-K accumulation patterns (e.g., blockwise FP8).

Example (MMA warp): for i in range(num_iters): with mma_ctx.output_pipeline.per_k().produce() as stage: mma(stage.tmem, ...) # exit signals mma_arrive for this K iteration

Example (Epilogue warp): for k_iter in range(num_iters): with epi_ctx.output_pipeline.per_k().consume() as stage: promote(stage.tmem, ...) # exit signals consumer_step for this K iteration

Fields

  • pipeline_ptr (Pointer[OutputKPipeline[origin, opc].TilePipelineType, origin]):

Implemented traits

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

comptime members

TilePipelineType

comptime TilePipelineType = OutputTilePipeline[opc]

Methods

__init__

__init__(pipeline_ptr: Pointer[OutputKPipeline[origin, opc].TilePipelineType, origin]) -> Self

produce

produce(self) -> MmaKStage[origin, opc]

Get MMA stage context manager for one K iteration.

Returns:

MmaKStage: Context manager that acquires stage on enter and signals mma_arrive on exit.

consume

consume(self) -> PerKConsumerStage[origin, opc]

Get consumer context manager for one K iteration.

Returns:

PerKConsumerStage: Context manager that waits for MMA on enter and signals consumer_step on exit.

Was this page helpful?