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
MLASparseSharedMemory
struct MLASparseSharedMemory[config: MLASparseConfig[config.qkv_dtype, config.b_topk_, config.num_mbars_, config.q_smem_depth_, config.q_tmem_depth_, config.cta_group_]]
Fieldsβ
- βqkvo_union (
UnsafeUnion[Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((mul (config // cta_group_), config.qk_depth))], Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((add (mul ((config // Int(2)) // cta_group_), b_topk_, 2), (mul (b_topk_ // cta_group_), config.qk_depth), (mul (config // cta_group_), q_smem_depth_)))], Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((mul (config // cta_group_), config.v_depth))]]): - βscores (
Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((mul (config // cta_group_), b_topk_))]): - βp (
Array[Float32, Int((mul (config // cta_group_), b_topk_))]): - βprologue_q (
Array[SharedMemBarrier, Int(1)]): - βprologue_q_cp (
Array[SharedMemBarrier, Int(1)]): - βqk_ss_done (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βqk_ts_done (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βsv_p0_done (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βsv_p1_done (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βk_p0_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βk_p1_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βv_p0_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βv_p1_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βp_free (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βso_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βk_valid_ready (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βk_valid_free (
Array[SharedMemBarrier, MLASparseSharedMemory[config].num_mbars]): - βis_k_valid (
Array[UInt8, (MLASparseSharedMemory[config].num_mbars * MLASparseSharedMemory[config].MASK_BYTES_PER_BUF)]): - βtmem_addr (
Array[UInt32, Int(1)]): - βrowwise_max (
Array[Float32, _resolve_warpgroup_size()]): - βrowwise_sum (
Array[Float32, _resolve_warpgroup_size()]):
Implemented traitsβ
comptime membersβ
BHβ
comptime BH = (config // config.cta_group)
FULL_Q_SIZEβ
comptime FULL_Q_SIZE = ((config // cta_group_) * config)
FULL_Q_TYPEβ
comptime FULL_Q_TYPE = Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((mul (config // cta_group_), config.qk_depth))]
INDICES_PER_LANEβ
comptime INDICES_PER_LANE = 8
K_SIZEβ
comptime K_SIZE = (MLASparseSharedMemory[config].TOPK_PER_CTA * config)
MASK_BYTES_PER_BUFβ
comptime MASK_BYTES_PER_BUF = (config.B_TOPK // Int(8))
NUM_KV_VALID_LANESβ
comptime NUM_KV_VALID_LANES = MLASparseSharedMemory[config].MASK_BYTES_PER_BUF
num_mbarsβ
comptime num_mbars = config.num_mbars
num_q_headsβ
comptime num_q_heads = config.num_q_heads
NUM_SV_ATOMSβ
comptime NUM_SV_ATOMS = 2
O_ATOM_PHYS_COLSβ
comptime O_ATOM_PHYS_COLS = ((config // Int(2)) // Int(2))
O_SIZEβ
comptime O_SIZE = ((config // cta_group_) * config)
O_TYPEβ
comptime O_TYPE = Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((mul (config // cta_group_), config.v_depth))]
qk_depthβ
comptime qk_depth = config.qk_depth
qkv_dtypeβ
comptime qkv_dtype
S_SIZEβ
comptime S_SIZE = ((config // cta_group_) * config.B_TOPK)
SHARED_Q_SIZEβ
comptime SHARED_Q_SIZE = ((config // cta_group_) * config.q_smem_depth)
SHARED_QKV_SIZEβ
comptime SHARED_QKV_SIZE = (Int((add (mul (b_topk_ // cta_group_), config.qk_depth), (mul (config // cta_group_), q_smem_depth_))) + Int((mul ((config // Int(2)) // cta_group_), b_topk_, 2)))
SHARED_QKV_TYPEβ
comptime SHARED_QKV_TYPE = Array[Scalar[MLASparseSharedMemory[config].qkv_dtype], Int((add (mul ((config // Int(2)) // cta_group_), b_topk_, 2), (mul (b_topk_ // cta_group_), config.qk_depth), (mul (config // cta_group_), q_smem_depth_)))]
SV_ATOM_MMA_Nβ
comptime SV_ATOM_MMA_N = (config // Int(2))
TOPK_PER_CTAβ
comptime TOPK_PER_CTA = (config.B_TOPK // config.cta_group)
V_BMN_PER_ATOMβ
comptime V_BMN_PER_ATOM = ((config // Int(2)) // config.cta_group)
V_DEPTH_PER_CTAβ
comptime V_DEPTH_PER_CTA = MLASparseSharedMemory[config].SV_ATOM_MMA_N
V_SIZEβ
comptime V_SIZE = (config.B_TOPK * Int((mul ((config // Int(2)) // cta_group_), 2)))
V_SMEM_COLS_PER_CTAβ
comptime V_SMEM_COLS_PER_CTA = (((config // Int(2)) // cta_group_) * Int(2))
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!