2025 年 12 月,在 CUDA 发布近二十年后,NVIDIA 推出了最新版 CUDA 13.1,核心变化在于全新的 CUDA Tile(简称 cuTile)编程模型,通过「Tile-based」编程模型重新组织了 GPU 的内核结构,支持开发者在不直接操作底层 CUDA C++ 的前提下,写出具备高性能特性的 Kernel。对于 GPU 编程生态来说,这无疑是一个值得关注的节点:它或许是 NVIDIA 为了应对 AI 时代日益增长的自定义算子需求,进一步提升软件生态粘性而推出的新层级产品。
而在进入公共视野后,cuTile 也迅速在开发者社区引发了有关自定义算子开发周期、与竞品 Triton 的直接竞争,以及能否成为 Python 默认入口的广泛讨论。虽然 cuTile 还处在非常早期的阶段,但从目前的开发者反馈来看,它已经具备成为新范式的潜力。
随着相关生态逐步成形,cuTile 的定位与潜力也变得更加清晰。在 GitHub、论坛与内部项目中,有大量工程师们肯定了 cuTile 在代码组织和可读性上的改进,部分社区用户则进行了将现有 CUDA 代码迁移到 cuTile 的尝试。在支持 Python 生态后,cuTile 是否会成为 GPU 编程的主流入口,抑或在 CUDA 与 Triton 之间形成新的技术分工?随着更多真实工作负载涌入,这些答案或许会在未来几年逐渐。
cuTile,让 GPU 编程进入「专注代码」的时代
在过去的很长一段时间里,CUDA 向开发者提供了单指令多线程(SIMT)的硬件和编程模型,让其通过「线程(thread)」的粒度来描述 GPU 的并行计算逻辑:一个 kernel 被切分成成千上万的线程,每个线程执行一小段计算,成组线程组成 block,再由硬件映射到 SM(Streaming Multiprocessor)上执行。
但随着计算需求特别是 AI 训练规模在过去 3-5 年呈指数级增长,这种以 thread 为中心的编程遇到越来越多的瓶颈。研究人员与工程师不仅需要理解线程调度,还要深入考虑 memory coalescing、warp 发散甚至 Tensor Core 的执行格式。换句话说,写一个高性能的 CUDA kernel 需要对显卡架构的方方面面了然于胸,否则很难完全发挥出硬件全部性能。
而 cuTile 的出现,正是英伟达对这一趋势的回应——让开发者回归算法,而硬件性能激发则交给框架。
具体而言,cuTile 是一种面向 NVIDIA GPU 的并行编程模型,同时也是一个基于 Python 的领域专用语言(DSL)。它能够自动利用先进的硬件能力,例如 Tensor Core 和张量内存加速器,并在不同的 NVIDIA GPU 架构之间保持良好的可移植性。
Tile 模型(左图)将数据划分为块,由编译器映射到线程;SIMT 模型(右图)则将数据同时映射到块和线程
从技术层面来看,CUDA Tile 的基础是 CUDA Tile IR(中间表示),其引入了一套虚拟指令集,使得硬件可以以 Tile 操作的方式进行原生编程。开发者可以编写更高层次的代码,而这些代码仅需极小的修改便能够跨多代 GPU 高效执行。
虽然 NVIDIA 的 Parallel Thread Execution(PTX) 保证了 SIMT 程序的可移植性,但 CUDA Tile IR 扩展了 CUDA 平台,使其原生支持基于 Tile 的程序。开发者可以专注于将数据并行程序划分为 tiles 和 tile blocks,由 CUDA Tile IR 处理这些 tile 在硬件资源上的映射,包括线程、内存层次结构以及张量核心(tensor cores)。也就是说,基于 Tile 的编程使开发者能够通过指定 tiles 来编写算法,并定义这些 tiles 上执行的计算操作,但无需为算法的每个元素逐一设置执行方式,交由编译器来处理这些细节。
CUDA 推行 20 年,NVIDIA 为何选择更新编程范式
cuTile 的推出,距离 CUDA 首次发布已将近二十年。自 2006 年发布以来,CUDA 逐步从 GPU 编程接口演变为贯穿框架、编译器、库与工具链的完整生态层,并作为 NVIDIA 软件体系的核心基础设施延续至今。NVIDIA 选择在 2025 年推出新的编程范式对 CUDA 进行迭代,其实并非单纯的技术演进,而是对行业环境变化的直接回应。
一方面,AI 工作负载的变化带来了极高的自定义算子需求,传统 CUDA C++ 的开发速度、调试成本以及人才稀缺问题已经成为制约。许多团队能够快速设计算法,但难以在短时间内写出高性能、可维护的 CUDA Kernel。cuTile 的推出正是为了解决这一矛盾:在不牺牲性能的前提下,提供一种对 Python 友好的入口,让更多开发者能在可控成本下构建自定义算子,从而降低整体 GPU 编程门槛并缩短迭代周期。
换言之,cuTile 是 NVIDIA 为未来十年 GPU 软件生态做的提前布局,是在算子 DSL 战争全面展开前,NVIDIA 把编程范式重新收回自己手里的关键动作。
而另一方面,在「去英伟达化」的趋势下,GPU 软件生态的竞争愈发激烈:AMD 推出开源加速计算平台 ROCm,通过开放架构吸引更多第三方库与工具接入,扩大生态覆盖;Intel 推出 OneAPI,试图构建跨架构统一的编程模型,并提供 DPC++ 等语言支持以降低异构系统开发的复杂度,这些无一不在削弱 CUDA 的独占地位。
此外,AI 大模型公司和芯片公司也竞相自研算子 DSL。早在 2022 年 10 月,OpenAI 就发布了 Triton。这种面向 GPU 的开源深度学习编程语言编译器,无需深入 CUDA C++ 的底层细节,就能让开发者使用简洁的 Python-风格代码编写高性能 GPU 内核。于是,Triton 在社区内迅速引起关注。许多研究者和工程师认为,Triton 降低了 GPU 算子开发的入门门槛。而 Meta/FAIR 相关的 TC/tensor language、以及社区围绕 TVM/Relay/DeepSpeed 等构建的算子编译和优化框架,也为软件生态的细分领域竞争提供了多样化的选择。
这直接推动了 cuTile 的出现——为了稳固商业护城河,NVIDIA 不得不进一步提升其软件体系的封装程度与使用体验,使更多开发者选择留在 CUDA 生态内。SemiAnalysis 发文称,cuTile 的问世是 NVIDIA 试图加深 CUDA 护城河的重要举措,「PyTorch 编译器现在除了支持 Triton 之外,还可以支持 NVIDIA Python CuTeDSL,这使得 FlexAttention 的速度比 Triton 实现快 2 倍。NVIDIA 一直大力支持其闭源的 Python CuTeDSL、cuTile 和 TileIR 生态系统,通过 Python CuTeDSL/cuTile/TileIR,NVIDIA 重新获得了闭源编译器优化通道。」
SemiAnalysis 发文
复制 triton?cuTile 的「Tile 思维」,开发者这样说
事实上,cuTile 的市场反响中夹杂着争议的声音。有开发者使用后反馈称,Tile 优化是新颖的进步,但 DSL 过多也带来了新的学习成本。Reddit 用户 Previous-Raisin 1434 评论表示,cuTile 新增的 DSL 让他在过渡阶段感到冗杂。
「为什么突然冒出上千种不同的东西?我之前用的是Triton,现在 NVIDIA 居然又推出了十几个新的 DSL。」他抱怨道。
Reddit 用户有关 DSL 的负面意见,例如抱怨 NVIDIA 又推出了多个新的 DSL
同时,还有相关从业人员质疑 cuTile 在产品的差异性和原创性上略显乏力,「cuTile 感觉像是 NVIDIA 对 Triton、Mojo 和 ThunderKittens 的回应,像把它们被整合在一起。」
使用者质疑 cuTile原创性,称其像是整合了 Triton、Mojo 和 ThunderKittens
对此,CUDA 初始团队成员 Nicholas Wilt 甚至也发文称,「很难不怀疑 cuTile 就是直接针对 Triton 而开发的。cuTile 就是一个新的 eDSL,用于编写内核,就像 Triton 或 Helion 一样。」
CUDA 创始团队成员发文锐评:怀疑 cuTile 就是直接针对 Triton 而开发的
那么,cuTile 复制 triton 了吗?对此,大部分用户给出了否定的答案——事实证明,cuTile 的市场反响大体上仍趋于乐观,除了少数质疑意见外,大部分用户并未对此次更新表现出不满,甚至称赞 cuTile 是「颠覆性的产品」,「cuTile 使用户无需再考虑内存交换、warp spclz、内存合并以及其他一百多种问题」。
X 平台用户大赞 cuTile 是颠覆性产品
根据一篇科技博客的观点,cuTile 赢取用户心智的核心魅力就在于其「Tile」思想将 GPU 计算引入了更高层次的抽象阶段。
「我本以为这又是一个 CUDA 的 Python 绑定或简化包装,但深入其文档和示例后,我发现它的野心更大。cuTile 的核心思想是 Tile,在并行计算和硬件加速领域,Tiling 是一种经典优化技术,将大数据集分割成小块,以便更好地利用高速缓存或共享内存。cuTile 将这个思想提升到了编程模型的高度。」该博客指出,「它允许开发者直接以 Tile 为基本单位来思考和描述计算。你不再需要显式地管理线程块中的每一个线程如何协作、如何从全局内存加载数据到共享内存、如何进行同步。相反,你定义数据的瓦片、定义在瓦片上执行的操作,cuTile 的编译器会帮你自动生成高效的内核代码,处理那些繁琐的底层细节。」
尽管 cuTile 仍处在早期阶段,但业内已经出现了主动探索迁移路径的实践。一些算法从业人员开始尝试构建从 CUDA C++ 到 cuTile 的自动化转换工具,希望在现有工程代码和新范式之间建立可行的桥梁。其中,有 Reddit 社区的开发者发起了开源项目,能够将部分 CUDA Kernel 翻译为基于 Tile 的形式,以满足社群潜在迁移需求。
发布在 Reddit 的开源项目,将部分 CUDA Kernel 翻译为基于 Tile 的形式
但 NVIDIA 的「Tile」范式究竟能走多远,并没有明确的答案——作为新产品,cuTile 才刚刚进入验证期。如果从 CUDA 到 cuTile 的迁移工具链进一步成熟,并且社区愿意围绕 cuTile 形成新的尝试与讨论圈子,那么 cuTile 或将在未来的 GPU 软件生态中占据前所未有的位置。但无法跨过这些门槛的结果十分明确—— cuTile 可能止步于 CUDA 历史长河中的一次短暂实验。总之,在目前的竞争环境下,cuTile 的持续吸引力将取决于它能否不断优化开发体验、降低迁移成本,并为复杂算子提供不可替代的性能优势。
参考链接:
1.https://byteiota.com/nvidia-cutile-python-gpu-kernel-programming-without-cuda-complexity/
2.https://veyvin.com/archives/github-trending-2025-12-08-nvidia-cutile-python
3.https://cloud.tencent.com/developer/article/2512674
4.https://developer.nvidia.com/blog/focus-on-your-algorithm-nvidia-cuda-tile-handles-the-hardware