刚刚,英伟达CUDA迎来史上最大更新!

文章核心观点 - NVIDIA发布了CUDA Toolkit 13.1,这是其CUDA平台自2006年诞生以来规模最大、最全面的一次更新,核心是引入了全新的CUDA Tile编程模型,旨在通过更高层次的抽象来简化GPU编程,特别是针对AI领域的张量计算,并提升代码对未来GPU架构的兼容性 [1][2][4] CUDA Tile 编程模型 - 核心概念与优势:CUDA Tile是一种基于Tile(数据块)的编程模型,允许开发者在高于传统单指令多线程(SIMT)的层级编写GPU核函数 [7] 开发者只需指定数据块(Tile)及要在其上执行的数学运算,编译器和运行时环境会自动决定将工作负载分发到各线程的最佳方式,从而屏蔽了调用Tensor Core等专用硬件的底层细节 [8][9] - 组成组件:CUDA 13.1包含两个用于Tile编程的组件:1) CUDA Tile IR,一种用于NVIDIA GPU编程的全新虚拟指令集架构(ISA);2) cuTile Python,一种新的领域特定语言(DSL),用于在Python中编写基于数组和Tile的核函数 [10] - 开发背景与目标:随着AI工作负载演进,张量成为基础数据类型,专用硬件(如Tensor Core)日益复杂 [15] CUDA Tile的引入是为了提供一种比SIMT层级更高的新型GPU编程方式,抽象化Tensor Core及其编程模型,使编写的代码能兼容当前及未来的Tensor Core架构,简化高性能代码编写 [14][15] - 当前限制与规划:目前CUDA Tile仅支持NVIDIA Blackwell(计算能力10.x和12.x)系列产品,开发重点聚焦于AI算法的Tile编程 [16] 英伟达计划在未来的CUDA版本中扩展对更多架构的支持、增加更多特性并引入C++实现 [16] 运行时与多进程服务(MPS)更新 - Green Context(绿色上下文):这是一种轻量级的CUDA上下文替代方案,自CUDA 13.1起在运行时API中开放使用 [20][21] 它允许用户定义和管理GPU资源的独立分区(主要是流式多处理器SM),从而实现对GPU空间更细粒度的划分与资源分配,典型应用是确保高优先级、低延迟代码能获得专属的SM资源 [21] - 内存局部性优化分区(MLOPart):这是NVIDIA Blackwell系列及更新GPU上的一项新特性,允许基于同一物理GPU创建多个专门优化内存局部性的独立CUDA设备,每个设备拥有更少的计算资源和更小的可用内存 [25] 目前仅支持NVIDIA B200与B300系列,未来版本将加入对GB200与GB300系列的支持 [28] - 静态流式多处理器(SM)分区:这是针对NVIDIA Ampere架构及更新GPU的MPS特性,为客户端提供创建独占SM分区的方法,旨在提供确定性的资源分配并改善客户端间的隔离性 [29] 数学库性能增强 - cuBLAS性能更新:CUDA 13.1增加了对FP4、FP8和BF16数据类型的性能支持 [40] 并引入了一项全新的实验性API,支持Blackwell GPU的分组GEMM功能,兼容FP8和BF16/FP16数据类型,在MoE用例中,其设备端形状可实现最高4倍的加速,优于多流GEMM实现 [41] - cuSOLVER性能更新:CUDA 13.1继续优化用于特征分解的批处理SYEVD与GEEV API [42] 在批大小为5,000的测试中,与NVIDIA L40S相比,NVIDIA Blackwell RTX Pro 6000 Server Edition实现了约2倍的加速 [42] 对于一般稠密矩阵特征值计算(GEEV),当矩阵行数n=5000时加速比约为1.0,在n=30000时达到约1.7 [45][46] 开发者工具更新 - Nsight Compute增强:增加了对CUDA Tile核函数的性能分析支持,在摘要页新增“Result Type”列以区分Tile与SIMT核函数,在详情页新增“Tile Statistics”部分总结Tile维度和管线利用率,并在源码页支持将指标映射到高层级的cuTile核函数源码 [33][35] - 编译时修补与插桩:NVIDIA Compute Sanitizer 2025.4通过编译器标志增加了对NVCC编译时修补的支持,增强了内存错误检测能力并提升了性能 [34] 编译时插桩功能可将错误检测直接集成到NVCC中,实现更快的运行速度并通过高级分析捕捉更隐蔽的内存问题 [36] - Nsight Systems更新:2025.6.1版本带来了系统级CUDA追踪、CUDA主机函数追踪、默认硬件模式追踪等新功能,并在时间轴行中显示Green Context的SM分配情况以帮助理解GPU资源利用率 [41] CUDA核心计算库(CCCL)更新 - 确定性浮点运算选项:NVIDIA CCCL 3.1为cub::DeviceReduce提供了额外的浮点确定性选项,允许用户在确定性和性能之间进行权衡 [50] 新增“GPU间”选项可保证在不同GPU间运行得到逐位相同的结果 [53] - 更便捷的单相CUB API:CCCL 3.1为一些CUB算法添加了新的重载,允许用户跳过繁琐的临时存储查询、分配和释放两阶段调用模式,简化了API使用 [54][55]