tilelang.language.copy_opΒΆ
Copy operations exposed on the TileLang language surface.
FunctionsΒΆ
|
Copy data between memory regions. |
|
Perform im2col transformation for 2D convolution. |
Module ContentsΒΆ
- tilelang.language.copy_op.copy(src, dst, *, coalesced_width=None, disable_tma=False, eviction_policy=None, annotations=None, loop_layout=None)ΒΆ
Copy data between memory regions.
- Parameters:
src (Union[tir.Buffer, tir.BufferLoad, tir.BufferRegion]) β Source memory region
dst (Union[tir.Buffer, tir.BufferLoad, tir.BufferRegion]) β Destination memory region
coalesced_width (Optional[int], keyword-only) β Width for coalesced memory access. Defaults to None.
disable_tma (bool, keyword-only) β Whether to disable TMA acceleration. Defaults to False.
eviction_policy (Optional[str], keyword-only) β Cache eviction policy. Defaults to None.
annotations (Optional[dict], keyword-only) β Additional annotations dict. If provided, coalesced_width, disable_tma, and eviction_policy can also be specified here. Values in annotations take precedence over individual arguments.
loop_layout (Optional[Fragment], keyword-only) β A parallel loop layout hint for the SIMT copy (only valid for normal SIMT copy; incompatible with TMA/LDSM/STSM/TMem). When provided, it is attached to the outermost parallel loop generated by this copy.
- Raises:
TypeError β If copy extents cannot be deduced from arguments
- Returns:
A handle to the copy operation
- Return type:
tir.Call
Range handling notes: - Accepts Buffer/BufferRegion/BufferLoad on either side. Extents are
derived as follows: Buffer -> shape, BufferRegion -> [r.extent], BufferLoad -> extents from its inferred/encoded region.
If both src and dst are scalar BufferLoad without region extents, lowers to a direct store: dst[β¦] = src.
If one side is missing extents, it is treated as all-ones with the other sideβs rank to enable broadcasting.
Extents are right-aligned and legalized via legalize_pairwise_extents: per tail-dimension, equal keeps as-is, a 1 broadcasts to the other, otherwise a conservative tir.max is used to remain safe for dynamic shapes.
The finalized extents are encoded with tl.region via to_buffer_region and passed through to the backend; low-level loop construction and any scope-specific decisions happen during lowering.
- tilelang.language.copy_op.c2d_im2col(img, col, nhw_step, c_step, kernel, stride, dilation, pad, eviction_policy=None)ΒΆ
Perform im2col transformation for 2D convolution.
- Parameters:
img (tir.Buffer) β Input image buffer
col (tir.Buffer) β Output column buffer
nhw_step (tir.PrimExpr) β Step size for batch and spatial dimensions
c_step (tir.PrimExpr) β Step size for channel dimension
kernel (int) β Kernel size
stride (int) β Stride of the convolution
dilation (int) β Dilation rate
pad (int) β Padding size
eviction_policy (Literal['evict_normal', 'evict_first', 'evict_last'] | None)
- Returns:
A handle to the im2col operation
- Return type:
tir.Call