""" Minimal CuTeDSL script to print UMMA descriptors for FMHA Q and K. Run on B200 with: python3 print_umma_desc_cute.py """ import sys sys.path.insert(0, '/root/cutlass/python/CuTeDSL') import torch import cutlass import cute # Configuration matching our FMHA decode HEAD_DIM = 64 M = 128 N = 128 # KV tile # Create a simple kernel that prints the UMMA descriptors @cute.jit def print_umma_descriptors(): # Construct SMEM layouts the same way the FMHA does # Using the SM100 utils from cutlass.utils.blackwell_helpers import make_smem_layout_a, make_smem_layout_b, OperandMajorMode # Q: MN-major, (M, HEAD_DIM) BF16 q_layout = make_smem_layout_a( major_mode=OperandMajorMode.MN_MAJOR, smem_tile_shape=cute.make_shape(M, HEAD_DIM), element_type=cutlass.float16, # BF16 stage=1, ) # K: K-major, (N, HEAD_DIM) BF16 k_layout = make_smem_layout_b( major_mode=OperandMajorMode.K_MAJOR, smem_tile_shape=cute.make_shape(N, HEAD_DIM), element_type=cutlass.float16, stage=1, ) cute.printf("Q layout shape: {}", cute.shape(q_layout)) cute.printf("Q layout size: {}", cute.size(q_layout)) cute.printf("K layout shape: {}", cute.shape(k_layout)) cute.printf("K layout size: {}", cute.size(k_layout)) if __name__ == "__main__": # Just trigger the JIT compilation to see the prints print("Compiling...") try: print_umma_descriptors() except Exception as e: print(f"Error: {e}") import traceback traceback.print_exc()