For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /max/get-started.md).
Mojo struct
SmemBarriers
struct SmemBarriers[num_group_pipeline_stages: Int, num_accum_pipeline_stages: Int, num_clc_pipeline_stages: Int]
Composable barrier storage for SM100 matmul SMEM structs.
This struct consolidates all barrier-related storage and accessors, enabling code reuse across MatmulSmem, BlockScaledSmem, and BlockwiseFP8Smem through composition.
Usage: Compose this struct into SMEM structs and delegate accessors:
```
struct MySmem[...]:
var barriers: SmemBarriers[num_group, num_accum, num_clc]
def input_barriers(ref[AddressSpace.SHARED] self):
return self.barriers.input_barriers()
```Parametersβ
- βnum_group_pipeline_stages (
Int): Number of K-group pipeline stages. - βnum_accum_pipeline_stages (
Int): Number of accumulator pipeline stages. - βnum_clc_pipeline_stages (
Int): Number of CLC pipeline stages.
Fieldsβ
- βinput_barriers_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].InputBarriers.Storage): - βaccum_barriers_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].AccumBarriers.Storage): - βclc_full_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers.Storage): - βclc_empty_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers.Storage): - βclc_throttle_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcThrottleBarriers.Storage): - βclc_response_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcResponse.Storage): - βtmem_dealloc_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemDealloc.Storage): - βtmem_addr_storage (
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemAddr.Storage):
Implemented traitsβ
AnyType,
ImplicitlyDestructible
comptime membersβ
AccumBarriersβ
comptime AccumBarriers = SMemArray[SharedMemBarrier, (num_accum_pipeline_stages * 2)]
ClcBarriersβ
comptime ClcBarriers = SMemArray[SharedMemBarrier, num_clc_pipeline_stages]
ClcResponseβ
comptime ClcResponse = SMemArray[UInt128, num_clc_pipeline_stages]
ClcThrottleBarriersβ
comptime ClcThrottleBarriers = SMemArray[SharedMemBarrier, (num_clc_pipeline_stages * 2)]
InputBarriersβ
comptime InputBarriers = SMemArray[SharedMemBarrier, (num_group_pipeline_stages * 2)]
TmemAddrβ
comptime TmemAddr = SMemArray[UInt32, 1]
TmemDeallocβ
comptime TmemDealloc = SMemArray[SharedMemBarrier, 1]
Methodsβ
input_barriersβ
input_barriers(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].InputBarriers
Returns input tile pipeline barriers (2 per group stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].InputBarriers
accum_barriersβ
accum_barriers(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].AccumBarriers
Returns accumulator pipeline barriers (2 per accum stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].AccumBarriers
clc_fullβ
clc_full(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers
Returns CLC full barriers (1 per CLC stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers
clc_emptyβ
clc_empty(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers
Returns CLC empty barriers (1 per CLC stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcBarriers
clc_throttleβ
clc_throttle(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcThrottleBarriers
Returns CLC throttle barriers (2 per CLC stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcThrottleBarriers
clc_responseβ
clc_response(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcResponse
Returns CLC response storage (1 UInt128 per CLC stage).
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].ClcResponse
tmem_deallocβ
tmem_dealloc(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemDealloc
Returns TMEM deallocation barrier.
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemDealloc
tmem_addrβ
tmem_addr(ref[AddressSpace._value] self) -> SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemAddr
Returns TMEM address storage.
Returns:
SmemBarriers[num_group_pipeline_stages, num_accum_pipeline_stages, num_clc_pipeline_stages].TmemAddr
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!