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_qint4
def matmul_qint4[group_size: Int, elementwise_lambda_fn: Optional[def[dtype: DType, width: SIMDLength, *, alignment: Int = Int(1)](IndexList[Int(2)], SIMD[dtype, width]) capturing thin -> None] = None](a_tt: TileTensor[DType.float32, Storage=a_tt.Storage, linear_idx_type=a_tt.linear_idx_type], b_tt: TileTensor[DType.uint8, Storage=b_tt.Storage, linear_idx_type=b_tt.linear_idx_type], c_tt: TileTensor[DType.float32, Storage=c_tt.Storage, linear_idx_type=c_tt.linear_idx_type], ctx: Optional[DeviceContext] = None)
Computes a matrix multiply of a float32 A matrix against block-wise quantized int4 B weights, producing a float32 result.
Dispatches to an architecture-specific kernel (VNNI, AVX2, NEON i8mm, or NEON dotprod) at compile time.
Parameters:
- βgroup_size (
Int): Number of elements per quantization group. - β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.
Args:
- βa_tt (
TileTensor[DType.float32, Storage=a_tt.Storage, linear_idx_type=a_tt.linear_idx_type]): Input A tensor in float32. - βb_tt (
TileTensor[DType.uint8, Storage=b_tt.Storage, linear_idx_type=b_tt.linear_idx_type]): Input B tensor holding packed uint8 int4 weights. - βc_tt (
TileTensor[DType.float32, Storage=c_tt.Storage, linear_idx_type=c_tt.linear_idx_type]): Output C tensor in float32. - βctx (
Optional[DeviceContext]): Optional device context for parallel execution.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!