SuperAPI AI 工具集

cute-dsl-ref

编程与开发

查看项目

更新于 10-16 03:17

技能介绍

CuTe Python DSL 是 NVIDIA CuTe 布局代数的 Python 接口,与 cuTile 的块级抽象不同,它暴露显式的线程/warp/warpgroup 控制、TMA 流水线、屏障编排和共享内存管理。

用途:编写 NVIDIA GPU 内核,尤其是需要精细控制数据搬运与同步的高性能算子(如 GEMM)。

主要能力:提供两级主机/设备模式——@cute.jit 主机函数在 CPU 上设置 TMA 描述符、计算网格、分配共享内存并启动内核;@cute.kernel 设备函数在 GPU 上执行计算。核心 API 覆盖线程/块/网格索引、布局与张量构造、布局代数、MMA 操作、拷贝与 TMA、共享内存、张量内存(仅 SM100)、同步、逐元素数学、张量操作与调试。支持 tcgen05 MMA(仅 SM100,即 B200/B300),消费级 Blackwell(SM120,如 RTX 5090)不支持。

使用方式:通过 @cute.kernel 与 @cute.jit 装饰器定义内核,用 kernel(...).launch(grid, block, smem, cluster) 启动,或用 cute.compile 做提前编译。JIT 产物自动缓存,可用 CUTE_DSL_CACHE_DIR 和 CUTE_DSL_DISABLE_FILE_CACHING 控制。

限制:@cute.kernel 函数名须与模块文件名一致;TMA 描述符仅限主机侧;每线程寄存器上限 255;SMEM 上限随设备与 SM 版本变化;流水线阶段占用 SMEM;屏障同步错误静默导致结果错误;集群维度须整除网格;print() 仅编译期可用;循环不支持提前退出;布局代数限 32 位整数;架构支持 Ampere(SM80)及以上。运行前应确认设备 SM 版本,不匹配时跳过运行或性能分析。