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:
output_storage_size
storage_size
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!