@elliotarledge: https://x.com/elliotarledge/status/2059409567805816872
摘要
CUDA 13.3 引入了重大增强,包括 Tile C++ 支持、C++23 标准、改进的 NVRTC、稳定的 CUDA Python 1.0 API,以及 PTX 9.3 中的新 fabric 指令和异步多内存操作,主要面向内核开发者和运行时工程师。
查看缓存全文
缓存时间: 2026/05/27 03:18
CUDA 13.3 和 PTX 9.3
CUDA 13.3 不仅仅是一次常规的小版本更新。
明面上的头条自然是“新工具包发布”,但更有看点的故事在于 NVIDIA 正在持续暴露更多的底层机制:tile 级编程、fabric 操作、更丰富的 mbarrier 语义、异步多内存、更好的运行时编译支持,以及一些实实在在的编译器/库修复。
如果你编写内核、构建运行时、调优集合通信,或关注 Blackwell 时代的编程模型,那么这个版本值得一读。
发布概览
CUDA 13.3 包含了更新的编译器、运行时、库和开发者工具组件。
重要版本信息:
- CUDA NVCC:13.3.33
- NVRTC:13.3.33
- CUDA 运行时:13.3.29
- cuBLAS:13.5.1.27
- Nsight Compute:2026.2.0.7
- Nsight Systems:2026.1.3
CUDA 13.x 的次要兼容性仍要求驱动版本 >= 580,但 CUDA 13.3 打包的 Linux 驱动分支为 610.43.02。这一点很重要,因为一些更有趣的平台特性依赖于更新的 r610 栈。
Tile C++ 日益成熟
CUDA Tile C++ 现在已成为该故事中的一等公民。
这是 NVIDIA 在推动更显式的 tile 导向编程模型:更接近内核工程师思考数据移动、矩阵 tile、布局和调度的层次,而无需完全降级到原始的 PTX/SASS。
在 CUDA 13.3 中,Tile C++ 同时支持 nvcc 和 NVRTC。
这一点很重要,因为它使得该模型在预编译和运行时编译工作流中都能发挥作用。
此外还有新的 tile 操作和类型,包括围绕 scaled MMA、pack/unpack 操作、stride 和 gather/scatter 风格的视图、i4 以及一种 4 位浮点类型的支持。
这可能是 CUDA 13.x 中“值得关注”的部分。
C++23 支持正式发布
CUDA 13.3 在 nvcc 和 NVRTC 中增加了对 C++23 的官方支持。
这不是版本中最耀眼的部分,但对于真实的 CUDA 代码库来说意义重大。运行时编译、模板密集型内核、CCCL 使用以及现代 host/device C++ 都将受益于 CUDA 更贴近现代 C++。
NVRTC 头文件处理更完善
NVRTC 现在可以安装并使用经过筛选的 CUDA C++ / CCCL 头文件,而无需像以前那样进行大量手动工具包/头文件配置。
这对于需要动态编译内核的系统来说是一个实际改进:Python 运行时、自动调优器、DSL、模型编译器、推理引擎以及内部内核生成栈。
CUDA Python 跨越重要里程碑
CUDA Python 现在为 cuda.core 和 cuda.compute 提供了稳定的 1.0 API。
cuda.compute 尤其有趣,因为它从 Python 中暴露了基于 CUB 的算法:
- reduce
- scan
- sort
- histogram
- select
- lower / upper bound
这不是“Python 取代 CUDA C++”,而是 CUDA 底层生态系统为工具、原型设计和自动化工作流提供了更好的可编程表面。
PTX 9.3:fabric、mbarrier 和异步多内存
PTX 9.3 才是内核工程师最感兴趣的“糖果”。
新增加的内容主要涉及同步、fabric 级操作、异步多内存以及对内存语义更精细的控制。
新的 fabric 指令:
fabric.try_getfabric.try_putfabric.try_redfabric.try_pullredfabric.waitfabric.submit
新的异步多内存操作:
multimem.st.asyncmultimem.red.async
更精细的内存语义控制:
- 异步批量拷贝和 reduce 的
.sem/.scope限定符 fence.proxy.to_proxykind::from_proxykind_fabric
更多的 mbarrier 机制:
.phase_type::*reportPredicatereportValue.layoutmbarrier.check_layout
其他 PTX 新增内容:
mma_throughputpragmaclmad指令
此外还有语义澄清:red.async 支持 sys scope,而非 cluster scope,且搭配 .release。
重要解读:NVIDIA 正在为多 GPU / fabric 可见行为、异步内存移动和屏障状态搭建更正式的机制。这是运行时作者和编写严肃集合通信的人员应该关注的 PTX 接口。
MPS 获得部分错误隔离
CUDA 13.3 通过静态 SM 分区为 MPS 添加了部分错误隔离能力。
历史上,MPS 下单个客户端的严重故障可能造成比预期更广的影响范围。该特性允许 MPS 将某些 SM 触发的错误隔离到特定分区/客户端。
这并非完美的隔离,NVIDIA 也明确指出了这一点。
但这对于共享 GPU 系统来说仍然是一个重大的运营改进:推理服务、混合在线/离线工作负载、小查询工作负载、机器人/嵌入式栈,以及那些试图在同一 GPU 上保持独立进程运行的系统。
离散 GPU 的 DMA-BUF mmap 支持
CUDA 13.3 为从 CUDA 设备内存导出的 DMA-BUF 文件描述符添加了 mmap() 支持,适用于离散 GPU。
实际含义:在某些环境中,现在有了一条更低延迟的 CPU 映射路径来访问导出的 GPU 内存,而无需完全依赖 GDRCopy 内核驱动。
如果你从事 GPU 内存、CPU 控制代码、I/O 设备或外部内存抽象之间的数据路径工作,这一点值得深入研究。
cuBLAS 在 Blackwell 上获得显著提升
cuBLAS 13.3 包含多个值得注意的改进:
- 绿色上下文支持
- FP64 模拟 GEMM 工作空间上限不超过 8 GB
- Blackwell Ultra 上更好的 FP4 矩阵乘法性能
- Blackwell 和 Blackwell Ultra 上更好的 TF32 矩阵乘法性能
- Hopper 上更好的 TF32 TN 矩阵乘法性能
- Hopper、Blackwell 和 Blackwell Ultra 上基于 TMA 的 SYMV 加速
TF32 性能提升最为突出。NVIDIA 报告称,在 Blackwell / Blackwell Ultra 的问题规模和布局上,几何平均改进达 27%,某些小规模问题甚至提速高达 3.5 倍。
一如既往,请针对你的实际尺寸进行基准测试。
值得注意的正确性修复
有两个正确性修复值得关注。
首先:CUDA 13.3 修复了自 CUDA 12.8 以来存在的一个编译器问题,即编译器插入的线程再聚合在具有多层嵌套发散的核函数中可能失效。这可能导致寄存器值陈旧或损坏,从而引发错误执行。
这类 Bug 是内核工程师应该立即关注的。
其次:CUDA Math 修复了一个涉及 __mul24() 和编译时常量输入的静默数据损坏问题。该问题自 CUDA 11.1 引入,在 CUDA 13.3 中得到解决。
已知注意事项
几点需要注意:
- 不再提供传统的 Nsight Eclipse Edition 插件。
- CUDA Tile C++ 存在一个已知问题:当 GLIBC 强化级别 2+ 启用时,tile 函数中的
printf()可能产生错误的诊断信息。解决方法:添加-U_FORTIFY_SOURCE。 - Compute Fabric Transport 存在一些已知问题。单播逻辑端点需要 Fabric Manager 610+,
fabric.try_pullred目前并非最优,某些逻辑端点内存绑定在同进程多 GPU 指针访问时可能表现不正确。
总结
CUDA 13.3 之所以有趣,是因为它延续了 CUDA 13.x 的趋势:对底层机制更显式的控制、更丰富的 tile/fabric 级编程接口、更好的运行时编译体验,以及 Blackwell 时代有意义的库调优。
对于大多数应用程序开发者来说,这是一次不错的工具包更新。
对于内核工程师、编译器人员、运行时作者以及任何在多设备上构建 GPU 系统的人来说,PTX 9.3 是需要仔细阅读的部分。
本文由 GPT 5.5 Medium Fast 撰写
相似文章
@charles_irl: https://x.com/charles_irl/status/2071606346844442871
本文通过一个简单的向量加法示例,详细介绍了CUDA内核从源代码到硬件执行的编译和启动全过程,并阐述了nvcc、PTX、SASS及ioctls的作用。
@ggerganov:强调 llama.cpp 在多GPU和张量并行支持方面的最新进展 过去几个月来,llama.cpp 取得了多项…
llama.cpp 维护者与 NVIDIA 工程师合作,显著提升了 ggml 中的多GPU性能,实现了硬件无关的张量并行,并在 RTX 系统上获得了显著的性能提升。
@PyTorch:PyTorch 2.13 来了,包含来自 526 位贡献者的 3,328 次提交,并更新了 FlexAttention、CuTeDSL、nn.LinearCros…
PyTorch 2.13 已发布,主要更新包括:Apple Silicon 上的 FlexAttention(速度提升高达 12 倍)、CuTeDSL 后端、可将显存减少 4 倍的 nn.LinearCrossEntropyLoss、新的 torchcomms 通信后端、FSDP2 通信重叠、Python 3.15 wheel 支持以及更广泛的平台支持。计划于 7 月 22 日进行现场问答。
@reprompting: https://x.com/reprompting/status/2074133435401064486
一条详细总结《大规模并行处理器编程》一书的推文串,重点介绍CUDA和GPU编程概念、优化技术以及并行模式。
引入 CUDA Rust:编写 GPU 内核的两种途径
NVIDIA 推出 CUDA Rust,提供两种途径(SIMT 和 Tile),用于原生用 Rust 编写 GPU 内核,从而提升 AI 系统的性能和开发体验。