IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).

Mojo struct

SmemPipelineBundle

struct SmemPipelineBundle[num_group_pipeline_stages: Int, num_accum_pipeline_stages: Int, num_clc_pipeline_stages: Int, Payload: TilePayload, num_epilogue_load_stages: Int = Int(0)]

Composed pipeline storage with unified barrier accessors.

Bundles InputPipelineStorage, OutputPipelineStorage, ClcPipelineStorage, TmemDeallocStorage, and optionally EpiLoadPipelineStorage into a single composed struct, eliminating ~60 lines of duplicated pipeline declarations, barrier type aliases, and barrier accessor methods from each SMEM struct.

Parameters

  • num_group_pipeline_stages (Int): Number of grouped pipeline stages for input.
  • num_accum_pipeline_stages (Int): Number of accumulator pipeline stages.
  • num_clc_pipeline_stages (Int): Number of CLC scheduler pipeline stages.
  • Payload (TilePayload): Tile payload type (e.g. StandardTilePayload, BlockScaledTilePayload).
  • num_epilogue_load_stages (Int): Number of epilogue load stages (0 = disabled).

Fields

  • input_pipeline (SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].InputPipeline):
  • output_pipeline (SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].OutputPipeline):
  • clc_pipeline (SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].ClcPipeline):
  • tmem_dealloc_pipeline (SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].TmemDeallocPipeline):
  • epi_load_pipeline (SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].EpiLoadPipeline):

Implemented traits

AnyType, Deinitable, Movable

comptime members

AccumBarriers

comptime AccumBarriers = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].OutputPipeline.BarrierArray

ClcBarriers

comptime ClcBarriers = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].ClcPipeline.BarrierArray

ClcPipeline

comptime ClcPipeline = ClcPipelineStorage[num_clc_pipeline_stages]

ClcResponse

comptime ClcResponse = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].ClcPipeline.ResponseArray

ClcThrottleBarriers

comptime ClcThrottleBarriers = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].ClcPipeline.ThrottleArray

EpiLoadBarriers

comptime EpiLoadBarriers = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].EpiLoadPipeline.BarrierArray

EpiLoadPipeline

comptime EpiLoadPipeline = EpiLoadPipelineStorage[num_epilogue_load_stages]

InputBarriers

comptime InputBarriers = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].InputPipeline.BarrierArray

InputPipeline

comptime InputPipeline = InputPipelineStorage[num_group_pipeline_stages, Payload]

OutputPipeline

comptime OutputPipeline = OutputPipelineStorage[num_accum_pipeline_stages]

TmemAddr

comptime TmemAddr = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].TmemDeallocPipeline.AddrArray

TmemDealloc

comptime TmemDealloc = SmemPipelineBundle[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages, Payload, num_epilogue_load_stages].TmemDeallocPipeline.BarrierArray

TmemDeallocPipeline

comptime TmemDeallocPipeline = TmemDeallocStorage

Methods

input_barriers

def input_barriers(ref[AddressSpace._value] self) -> Self.InputBarriers

Returns input tile pipeline barriers.

Returns:

Self.InputBarriers

accum_barriers

def accum_barriers(ref[AddressSpace._value] self) -> Self.AccumBarriers

Returns accumulator pipeline barriers.

Returns:

Self.AccumBarriers

clc_full

def clc_full(ref[AddressSpace._value] self) -> Self.ClcBarriers

Returns CLC full barriers.

Returns:

Self.ClcBarriers

clc_empty

def clc_empty(ref[AddressSpace._value] self) -> Self.ClcBarriers

Returns CLC empty barriers.

Returns:

Self.ClcBarriers

clc_throttle

def clc_throttle(ref[AddressSpace._value] self) -> Self.ClcThrottleBarriers

Returns CLC throttle barriers.

Returns:

Self.ClcThrottleBarriers

clc_response

def clc_response(ref[AddressSpace._value] self) -> Self.ClcResponse

Returns CLC response storage.

Returns:

Self.ClcResponse

tmem_dealloc

def tmem_dealloc(ref[AddressSpace._value] self) -> Self.TmemDealloc

Returns TMEM deallocation barrier.

Returns:

Self.TmemDealloc

tmem_addr

def tmem_addr(ref[AddressSpace._value] self) -> Self.TmemAddr

Returns TMEM address storage.

Returns:

Self.TmemAddr

epilogue_load_barriers

def epilogue_load_barriers(ref[AddressSpace._value] self) -> Self.EpiLoadBarriers

Returns epilogue load pipeline barriers.

Returns:

Self.EpiLoadBarriers

epilogue_load_barrier_ptr

def epilogue_load_barrier_ptr(ref[AddressSpace._value] self) -> MbarPtr

Returns epilogue load pipeline barrier pointer.

Returns:

MbarPtr