NVIDIA 近日发布了 CUDA 13.3 版本,为 CUDA 开发者生态带来了大量新功能和性能优化。其中一大亮点是 C++ 中的 NVIDIA CUDA Tile 编程,它使得开发者能够进行高级、基于 Tile 的核函数开发,并自动管理复杂的底层 GPU 细节,以实现最佳性能和跨架构可移植性。值得注意的是,CUDA Tile 编程现在除了支持所有现有 GPU 架构外,还扩展支持 Compute Capability 9.0 (NVIDIA Hopper) GPU。
与此版本同步发布的还有 CUDA Python 1.0,这标志着 CUDA Python 软件生态系统的支持和稳定性迈向成熟。此版本引入了绿色上下文(green contexts)和进程检查点(process checkpointing)等关键特性。
对于追求极致性能的开发者而言,全新推出的 NVIDIA CompileIQ 编译器自动调优框架带来了显著提升,在 GEMM 和 Attention 等关键核函数上实现了高达 15% 的加速。此外,CUDA 13.3 还正式支持 NVCC 中的 C++23 标准,通过 CCCL 3.3 中的 DLPack/mdspan 扩展了张量互操作性,并对 cuBLAS、cuSPARSE、cuSOLVER 等数学库以及 Nsight Compute 和 Nsight Systems 等性能分析工具进行了大量更新。
CUDA 13.3 版本中,CUDA Tile 对 C++ 的支持是一项重大进展,它使庞大的现有 C++ 代码库和开发者群体能够创建高度优化的 GPU Tile 核函数。这种编程模型能够自动化并行性、内存移动、异步操作以及其他底层细节,从而生成可在不同 NVIDIA GPU 架构之间移植的 C++ 代码。
CUDA Python 是一套将 CUDA 功能暴露给 Python 编程语言的库集合。此次发布 1.0 版本,NVIDIA 承诺遵循语义化版本控制:确保只有在主版本发布时才会引入破坏性 API 更改。次要版本将添加新功能,而补丁版本则专注于错误修复。任何计划移除的公共 API 都将首先在次要版本中弃用,并提供清晰的替换路径。
CUDA Python 1.0 生态系统包含多个核心软件组件:cuda.binding 提供 CUDA C API 的低级 Python 绑定;cuda.core 提供对 CUDA Runtime 及其他核心功能的 Pythonic 访问;cccl-cuda 支持对 CCCL 高效且可定制的并行算法的 Pythonic 访问;而 cuda-pathfinder 则用于定位用户 Python 环境中安装的 CUDA 组件。
此外,cuda.coop 也可在 cuda-cccl 包的 _experimental 命名空间下使用,它为 Numba CUDA 核函数提供了可重用的块级和 Warp 级设备原语,但其 API 可能会有所变动。最后,cuda.core 在 1.0 版本中已达到稳定状态。它提供了 CUDA 运行时(包括设备、流、程序、链接器、内存资源和图)的 Pythonic 接口。此版本整合了过去几个发布周期中已趋于稳定的 API,形成一个统一且受支持的接口,并增加了对绿色上下文的支持。