Files
composable_kernel/example/ck_tile
juuso-oskari 80009b4c82 CK-UA: paged ps128 fast path for fp8 prefill_d128 at contiguous parity
Add single-page (page_blk_size == kPageBlockSize == 128) paged instances for
fp8 prefill_d128 (nmask + mask) and route page_blk_size==128 to them, so the
canonical prefill shape exercises the kRebaseKSrd single-page addressing fast
path (1 readfirstlane + 1 LDS block-table read + SRD rebase per tile).

Two address-overhead optimizations bring the paged kernel to parity with (and
slightly above) the contiguous baseline on b1 sq75600 hq=hk=5 d128 fp8:

- Share the K/V per-lane scatter array. In the single-page rebase regime
  k_page_offsets == v_page_offsets bit-for-bit (same kv_cache strides, same
  fp8 DRAM distribution), so feed one loop-invariant array to both scatter-
  gather windows; the backend then coalesces the duplicated page_idx_ storage
  (nmask spills 5->1, mask 6->2).

- Cross-stagger phys_page carry. K runs one tile ahead of V and shares the
  logical->physical page map, so V reuses the phys_page K already broadcast
  (R=2 tile-parity ring in SGPRs) instead of issuing its own block-table LDS
  read + readfirstlane. WG1 addr-phase stall drops 940 -> 64 cyc.

Standalone (gfx950): paged 1810 -> ~1910 TFLOP/s noncausal (matches contiguous
~1905); causal 1463 -> 1592. 0% mismatch vs host reference. Contiguous path is
unchanged -- all new code is gated on the paged single-page rebase flags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-15 12:53:50 +00:00
..

CK Tile Example Suite

This directory contains a comprehensive suite of examples demonstrating the CK Tile programming model for high-performance GPU kernels. Each example illustrates a key deep learning or HPC operation, implemented using tile-based parallelism, modular pipelines, and data movement policy.


What is CK Tile?

CK Tile is a composable GPU programming API that expresses kernels as a composition of "tiles"—rectangular blocks of computation and data movement. The pipeline & policy orchestrates data movement (global <-> LDS <-> registers), computation, and synchronization, enabling high efficiency and flexibility.


Example Index

Example Operation Description
01_fmha Fused Multi-Head Attention Tile-based FMHA with masking, quantization, and epilogue fusion
02_layernorm2d LayerNorm2D Blockwise layer normalization with fusion and quantization
03_gemm GEMM Matrix multiplication with tilewise parallelism
04_img2col im2col Image-to-column transformation for GEMM-based convolution
05_reduce Reduction Tilewise sum, max, mean reductions
06_permute Permute Generic tensor permutation (up to rank-8)
09_topk_softmax TopK-Softmax Rowwise softmax and top-k selection for MoE gating
10_rmsnorm2d RMSNorm2D Root mean square normalization for LLMs
11_add_rmsnorm2d_rdquant Add + RMSNorm2D + RDQuant Fused add, RMSNorm, and rowwise dynamic quantization
12_smoothquant SmoothQuant Per-channel scaling and quantization for int8 inference
13_moe_sorting MoE Sorting Token-to-expert rearrangement for MoE dispatch
14_moe_smoothquant MoE-SmoothQuant Expert-dependent quantization fused with top-k selection
15_fused_moe Fused MoE End-to-end fused MoE block: sorting, group-GEMM, activation, weighting
16_batched_gemm Batched GEMM Parallel computation of multiple GEMMs
17_grouped_gemm Grouped GEMM Multiple independent GEMMs with different shapes
18_flatmm FLATMM Flattened matrix multiplication for packed layouts
19_gemm_multi_d Multi-D GEMM GEMM with multiple side inputs (bias, residual, etc.)
35_batched_transpose Batched Transpose NCHW <-> NHWC and other layout conversions
36_copy Copy Minimal example for tile-based memory movement
37_transpose Block Transpose High-performance tiled transpose for large tensors

Technical Highlights


How to Build & Run

mkdir build && cd build
sh ../script/cmake-ck-dev.sh ../ <arch>
make -j

Each example produces its own executable in build/bin/.


Learning and Extending


References


Back to Composable Kernel Examples