英伟达于本周四正式推出 CUDA 13.1,宣布这是自 2006 年 CUDA 平台问世以来“规模最大的一次功能扩展更新”。此次更新的核心是引入了一种名为 CUDA Tile 的全新 GPU 编程方式,旨在让更广泛的开发者能够更轻松地利用 GPU 的强大能力,尤其是 AI 与加速计算任务。
CUDA Tile 是一套用于基于数据块(Tile)的并行编程的虚拟指令集。它允许开发者在更高抽象层次上编写算法,并自动屏蔽如张量核心等专用硬件的实现细节,从而简化开发流程并提升代码在多种 GPU 架构间的可移植性。
传统的 CUDA 编程基于单指令多线程(SIMT) 模型,虽然为开发者提供了极高的灵活性与控制精度,但编写高性能且能跨多代 GPU 高效运行的代码往往需要深厚的专业知识和大量优化工作。
随着 AI 等计算负载的演进,张量(Tensor) 已成为基础数据类型。英伟达也为此设计了专用硬件,例如张量核心(TC) 和张量内存加速器(TMA)。硬件日益复杂,对软件抽象层的需求也愈加迫切。CUDA
Tile 正是为了抽象化张量核心及其编程模型而生,使基于它编写的代码能够兼容当前及未来的张量核心架构。
在这种范式下,开发者只需定义数据块(Tile)及其上的计算操作,而无需具体指定这些操作如何映射到硬件线程与内存层次。编译器与运行时会自动处理执行细节。这种模式在 Python 生态中已很常见,例如使用 NumPy 进行矩阵运算时,用户只需关注运算逻辑,无需手动管理底层并行执行。
CUDA Tile 建立在 CUDA Tile IR(中间表示) 之上。Tile IR 提供了一套虚拟指令集,使得基于 Tile 的操作能够直接映射到本机硬件。它扩展了 CUDA 平台,新增对基于 Tile 程序的原生支持,其角色类似于 SIMT 编程中的 PTX(Parallel Thread Execution)。
开发者将数据并行程序划分为 Tile 和 Tile 块,由 CUDA Tile IR 负责将其映射到线程、内存层次和张量核心等硬件资源。这一抽象层次的提升,有助于构建更高级别的硬件专用编译器、框架及领域专用语言。
值得强调的是,Tile 编程并非取代传统的 SIMT 编程,而是一种可选的补充方案。开发者可根据需求灵活选择:
l 当需要细粒度控制时,仍可编写传统 SIMT 内核;
l 当希望便捷利用张量核心等专用硬件时,则可编写 Tile 内核。
对于大多数开发者而言,并不需要直接接触 CUDA Tile IR。英伟达提供了更上层的工具:
NVIDIA cuTile Python:一个基于 CUDA Tile IR 后端的 Python 实现,让开发者能够以熟悉的 Python 语法进行 Tile 编程。而对于编译器、框架或函数库的开发者,可以直接基于 CUDA Tile
IR 进行开发,其文档与规范已公开,便于将现有以 PTX 为目标的工具扩展至支持 Tile 抽象。
CUDA 13.1 引入的 CUDA Tile 编程范式,是英伟达为了应对硬件复杂化、降低高性能计算与 AI 开发门槛而迈出的重要一步。通过提升抽象层级,它让开发者能更专注于算法本身,而非硬件细节,有望进一步推动 GPU 加速计算的普及与创新。