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 function
matmul_dispatch_sm100
def matmul_dispatch_sm100[c_type: DType, a_type: DType, b_type: DType, transpose_b: Bool = False, use_tf32: Bool = True, elementwise_lambda_fn: Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> None] = None, elementwise_lambda_wrapper: Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> None] = None, elementwise_compute_lambda_fn: Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> SIMD[dtype, width]] = None, pdl_level: PDLLevel = PDLLevel()](c: TileTensor[c_type, Storage=c.Storage, address_space=c.address_space, linear_idx_type=c.linear_idx_type], a: TileTensor[a_type, Storage=a.Storage, address_space=a.address_space, linear_idx_type=a.linear_idx_type], b: TileTensor[b_type, Storage=b.Storage, address_space=b.address_space, linear_idx_type=b.linear_idx_type], ctx: DeviceContext)
Dispatches a 2D matmul to the appropriate SM100 (B200+) kernel.
Routes the problem to GEMV for M=1 or N=1 shapes, to the IEEE-fp32 split-K GEMV for precise float32, or to the dtype-specific SM100 dispatcher (bf16, fp8, fp32) for general shapes, falling back to vendor BLAS when no Mojo SM100 config applies. In autotuning mode, launches a single compile-time-configured kernel from environment defines.
Parameters:
- βc_type (
DType): Output element type. - βa_type (
DType): Element type of the LHS operanda. - βb_type (
DType): Element type of the RHS operandb. - βtranspose_b (
Bool): Whetherbis stored transposed (defaults toFalse). - βuse_tf32 (
Bool): Whether to allow TF32 (truncated mantissa) multiplies for float32 instead of requiring IEEE-fp32 precision (defaults toTrue). - βelementwise_lambda_fn (
Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> None]): Optional epilogue applied to each output element, passed to the SM100 GEMM path (defaults toNone). - βelementwise_lambda_wrapper (
Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> None]): Optional epilogue lambda for GEMV and vendor fallback paths, folding in the compute lambda (defaults toNone). - βelementwise_compute_lambda_fn (
Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> SIMD[dtype, width]]): Optional compute epilogue lambda, for example a static scale, passed to the SM100 GEMM path (defaults toNone). - βpdl_level (
PDLLevel): Programmatic dependent launch level for the dispatched kernel (defaults toPDLLevel()).
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!