Skip to main content

Mojo struct

HopperMatmulSM90Kernel_SMem

struct HopperMatmulSM90Kernel_SMem[a_type: DType, a_layout: Layout, b_type: DType, b_layout: Layout, c_type: DType, c_layout: Layout, num_pipeline_stages: Int, num_consumers: Int, cluster_size: Int]

Fields

  • a_tiles (LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128]):
  • b_tiles (LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128]):
  • c_tile (LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128]):
  • full_mbar (UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)]):
  • empty_mbar (UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)]):
  • ring_buffer (RingBuffer[num_pipeline_stages, num_consumers, cluster_size]):

Implemented traits

AnyType, UnknownDestructibility

Aliases

__del__is_trivial

alias __del__is_trivial = RingBuffer[num_pipeline_stages, num_consumers, cluster_size].__del__is_trivial if UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else UnsafePointer[SharedMemBarrier, address_space=AddressSpace(3)].__del__is_trivial if LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensor[c_type, c_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[b_type, b_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial if LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial else LayoutTensorIter[a_type, a_layout, MutableAnyOrigin, address_space=AddressSpace(3), alignment=128].__del__is_trivial

ATileIterType

alias ATileIterType = SMemTileIter[a_type, a_layout, 128, num_pipeline_stages]

BTileIterType

alias BTileIterType = SMemTileIter[b_type, b_layout, 128, num_pipeline_stages]

CTileType

alias CTileType = SMemTile[c_type, c_layout, 128]

PipelineBarrierType

alias PipelineBarrierType = SMemArray[SharedMemBarrier, num_pipeline_stages]

RingBuffer

alias RingBuffer = RingBuffer[num_pipeline_stages, num_consumers, cluster_size]

SMM

alias SMM = NVIDIASharedMemoryManager

Methods

__init__

__init__(out self)

pipeline_storage_size

static pipeline_storage_size() -> Int

Calculate the memory size for all pipeline stages.

Returns:

Int

output_storage_size

static output_storage_size() -> Int

Calculate the memory size for output tile.

Returns:

Int

storage_size

static storage_size() -> Int

Calculate the total storage size.

Returns:

Int

Was this page helpful?