英伟达于 11 月 4 日发布 CUDA Toolkit 13.5,其中最受关注的变化是对 Vera Rubin GPU 架构的支持从早期开发者访问升级为正式可用(GA),意味着企业可以在生产环境中部署基于该架构的加速计算任务。同时,此前在 CUDA 13.4 已实现 GA 的 Windows on Arm 支持,本次进一步覆盖到 DGX Station for Windows,扩大了 Arm 架构 Windows 设备上的 CUDA 开发与运行范围。
在 GPU 资源调度层面,CUDA 13.5 对局部域(locality domain)做了增强。应用现在可以在两种流式多处理器(SM)分区策略间选择:一是各局部域使用统一的 SM 数量,保证可预测性;二是把域外补充 SM 也纳入分区,从而用满设备全部 SM,但各分区大小可能不一致。新增的 cudaDevSmResourceGroupLocalityDomainSupplementalSms 标志与 cudaDevSmResourceGroupLocalityDomainId 配合使用,可把补充 SM 纳入指定域;开发者还能通过 cudaDevSmResourceSplit() API 的发现模式获取每个分区的 SM 数量,据此分配工作负载。
NVIDIA Multi-Process Service(MPS)v3 则强化了多租户场景下的 GPU 共享控制。加权时间片允许为承载重负载的 MPS 服务器设置更长的基础时间片,并按服务器缩放,同时独立调节 GPU 在任务间切换的积极程度。SM 分区负载均衡让工作负载在资源空闲时借用超出基础分区的容量:通过 --max-chunks 开启借用,通过 --shareable=true 允许无客户端的分区出借 SM,两种设置相互独立,分区可只借、只出借或两者兼有;MPS 在重新分配前会回收借出的资源,应用看到的基础分区大小保持稳定。此外,MPS v3 还支持基于 cgroup 的路由(把 cgroup v2 子树映射到 MPS 命名空间,经主套接字连接的客户端自动路由到该命名空间)、按命名空间分配 SM 分区(一次选择即可应用于该命名空间下所有客户端,优先于环境变量回退),以及基于轮询的内存核算回退机制——当 cgroup 阈值通知缺失或不可靠时,MPS 可直接读取当前用量与限额,强制轮询可通过 nvidia-cuda-mps-control memacct set force_polling=true 在内存核算启动前开启。
CUDA Tile 在 13.5 中获得多 GPU 通信能力,支持 NVLink 与 NVSwitch fabric 上的单播和多播指针;同时以公开预览形式提供 SIMT 互操作,允许 Tile 内核调用来自 NVSHMEM、CCCL Coop、Warp、MathDx 等库的设备函数。CUDA Python 的 cuda.core 1.2 引入通过 copy_batch() 的批量内存拷贝、通过 LaunchConfig 实现的程序化依赖启动(Programmatic Dependent Launch),以及无需重新实例化即可更新 CUDA Graph 的更灵活方式。CCCL 3.5 则为 CUB 提供公开调优 API、可复现的浮点扫描、集成到 FlashInfer 的批量 Top-K 选择,以及通过 cuda::args::deferred 从设备内存读取元素计数的数据依赖归约。CUDA 13.5 还增加了 CUDA Graph 对批量一维内存拷贝的支持,应用可将现有的 cudaMemcpyBatchAsync 调用纳入流中。
从产业视角看,CUDA 13.5 的发布节奏与英伟达硬件路线图紧密咬合:Vera Rubin 从开发者预览走向 GA,意味着围绕下一代 GPU 的软件栈已进入可规模化部署阶段,云厂商与企业客户可以开始规划生产迁移。MPS v3 对多租户调度和资源借还的细化,回应了 AI 推理与训练混合负载下 GPU 利用率最大化的需求;CUDA Tile 的多 GPU 通信与 SIMT 互操作,则降低了跨库、跨节点编程的门槛。对关注 AI 基础设施的读者而言,这类工具链更新虽不直接涉及资本开支数字,却决定了新硬件从发布到实际产生算力供给的速度,也影响开发者生态的迁移成本与锁定效应。