Skip to main content

Mojo struct

TileScheduler

struct TileScheduler[num_stages: Int, cluster_shape: IndexList[3, element_type=DType.uint32] = Index[Int, Int, Int, dtype=DType.uint32](1, 1, 1), rasterize_order: RasterOrder = RasterOrder.AlongM, block_swizzle_size: Int = 8]

Fields​

  • ​cluster_dim (StaticTuple[Int32, 3]):
  • ​log_cluster_dim_m (FastDiv[DType.uint32]):
  • ​log_cluster_dim_n (FastDiv[DType.uint32]):
  • ​log_cluster_dim_k (FastDiv[DType.uint32]):
  • ​clc_response (UnsafePointer[UInt128, MutAnyOrigin, address_space=AddressSpace.SHARED]):
  • ​full_mbar (UnsafePointer[SharedMemBarrier, MutAnyOrigin, address_space=AddressSpace.SHARED]):
  • ​empty_mbar (UnsafePointer[SharedMemBarrier, MutAnyOrigin, address_space=AddressSpace.SHARED]):

Implemented traits​

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

comptime members​

cluster_size​

comptime cluster_size = ((cluster_shape[0] * cluster_shape[1]) * cluster_shape[2])

log_cluster_k​

comptime log_cluster_k = FastDiv(cluster_shape[2])

log_cluster_m​

comptime log_cluster_m = FastDiv(cluster_shape[0])

log_cluster_n​

comptime log_cluster_n = FastDiv(cluster_shape[1])

Methods​

__init__​

__init__(cluster_dim: StaticTuple[Int32, 3], clc_response_ptr: UnsafePointer[UInt128, address_space=AddressSpace.SHARED], full_mbar_ptr: UnsafePointer[SharedMemBarrier, address_space=AddressSpace.SHARED], empty_mbar_ptr: UnsafePointer[SharedMemBarrier, address_space=AddressSpace.SHARED]) -> Self

work_info_from_clc_response​

static work_info_from_clc_response(result: UnsafePointer[UInt128, address_space=AddressSpace.SHARED]) -> WorkInfo

Returns:

WorkInfo

work_info_from_cluster​

static work_info_from_cluster(work_info: WorkInfo, cluster_dim: StaticTuple[Int32, 3], log_cluster_dim_m: FastDiv[DType.uint32], log_cluster_dim_n: FastDiv[DType.uint32]) -> WorkInfo

Returns:

WorkInfo

initial_work_info​

initial_work_info(self) -> WorkInfo

Returns:

WorkInfo

fetch_next_work​

fetch_next_work(self, work_info: WorkInfo, consumer_state: PipelineState[num_stages]) -> WorkInfo

Returns:

WorkInfo

advance_to_next_work​

advance_to_next_work(self, mut clc_state: PipelineState[num_stages]) -> PipelineState[num_stages]

Returns:

PipelineState[num_stages]