Skip to main content

Mojo function

dispatch_im2col_matmul_conv3d

dispatch_im2col_matmul_conv3d[input_type: DType, filter_type: DType, output_type: DType, filter_is_fcrs: Bool, maybe_epilogue_func: Optional[def[dtype: DType, rank: Int, width: Int](IndexList[rank], SIMD[dtype, width]) capturing -> None] = None, m_tile_byte_budget: Int = 268435456](input: TileTensor[input_type, input.LayoutType, input.origin, address_space=input.address_space, linear_idx_type=input.linear_idx_type, element_size=input.element_size], filter: TileTensor[filter_type, filter.LayoutType, filter.origin, address_space=filter.address_space, linear_idx_type=filter.linear_idx_type, element_size=filter.element_size], output: TileTensor[output_type, output.LayoutType, output.origin, address_space=output.address_space, linear_idx_type=output.linear_idx_type, element_size=output.element_size], stride: IndexList[3], dilation: IndexList[3], symmetric_padding: IndexList[3], num_groups: Int, ctx: DeviceContext) -> Bool

Try to dispatch a 3-D conv as explicit im2col + generic matmul.

Returns True if the conv was handled; False if the caller should fall back to another implementation (naive Mojo kernel, cuDNN, etc.).

Skips on: non-bf16 dtype, grouped conv, dilation != 1, kernel size 1x1x1 (the vectorized naive kernel wins on tiny shapes), and K too small for the matmul fast path.

Returns:

Bool

Was this page helpful?