IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /max/get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
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

dispatch_rdna_conv2d

def dispatch_rdna_conv2d[input_type: DType, filter_type: DType, output_type: DType, filter_is_fcrs: Bool, maybe_epilogue_func: Optional[def[dtype: DType, rank: Int, width: SIMDLength, alignment: Int = Int(1)](IndexList[rank], SIMD[dtype, width]) capturing thin -> None] = None, has_residual: Bool = False](input: TileTensor[input_type, Storage=input.Storage, address_space=input.address_space, linear_idx_type=input.linear_idx_type], filter: TileTensor[filter_type, Storage=filter.Storage, address_space=filter.address_space, linear_idx_type=filter.linear_idx_type], output: TileTensor[output_type, Storage=output.Storage, address_space=output.address_space, linear_idx_type=output.linear_idx_type], stride: IndexList[Int(2)], dilation: IndexList[Int(2)], symmetric_padding: IndexList[Int(2)], num_groups: Int, ctx: DeviceContext, source_ptr: Pointer[Scalar[output_type], MutAnyOrigin, _safe=False] = Pointer.unsafe_dangling(), beta: Float32 = 0) -> Bool

Try to dispatch Conv2D on RDNA via implicit GEMM (im2col fused into WMMA).

Returns True if the convolution was handled, False if the caller should fall back to another implementation (e.g. MIOpen).

Uses the implicit GEMM kernel when C_in is aligned to BLOCK_K (covers all FLUX VAE shapes), falling back to explicit im2col + matmul otherwise.

When has_residual=True, folds output = conv + beta * source into the conv epilogue (the RDNA implicit-GEMM/im2col kernels have no native residual path). source_ptr is NHWC-contiguous, same shape as output: e.g. ResNet skip connections that the graph compiler fuses into the conv.

Parameters:

Args:

Returns:

Bool

Was this page helpful?