GPU 专家激辩驱动版本是否影响 CUDA 原子操作确定性
NVIDIA GPU 工程师 matiasgoldberg 与图形/计算专家 mike64t 在 11 月 1 日围绕「GPU 驱动版本是否影响设备端代码指纹、CUDA 原子操作是否具有确定性」展开多轮硬核技术辩论。核心问题是:同一个 cubin(编译后的 GPU 机器码)在不同驱动版本下运行,原子操作(atomic add)的结果是否可复现。
已确认
- 双方对 CUDA 编译模型达成一定共识:fat binary 为每个目标 sm 版本直接打包 cubin,不存在最终环节的重新编译;「virtual sm」只是标记某 sm100 二进制源自某虚拟架构的编译产物,计算领域几乎无人重编译 PTX(mike64t、matiasgoldberg)。
- mike64t 细化指出:一旦触发 LDG.E 或 ATOMG.ADD 这类内存指令,从 ISA 模型角度看时序便「不可预测」,但观测到的延迟并非无法解释。
争议点
- matiasgoldberg 主张 PTX 的契约并不保证编译产物稳定:NVIDIA 选择不破坏兼容与正式保证是两回事,cubin 虽被固定,驱动仍可决定改写它;代码要翻译成最终 ISA,这一翻译随驱动版本变化,即使翻译不变,硬件调用顺序的微小调整(如命令 A、B、C 变成 C、A、B)也会影响读取行为。
- 他进一步指出 GPU 对加法指令只保证最终结果值一致,不保证 3 周期还是 1 周期完成,也不保证哪个核心单元处理;一旦操作依赖原子操作(其正确性依赖时序),一切保证都不复存在。他举「600 条还是 599 条指令」的极端例子仅为了说明要点,不必字面理解。
- mike64t 则系统阐述 CUDA 编译模型反驳:fat binary 让各 sm 版本的指令调度彻底固化,不存在驱动重编译导致的指纹变化。
为什么重要
这场辩论触及 GPU 计算确定性的根本契约问题:若驱动版本可改变 cubin 或执行时序,则依赖原子操作的跨驱动可复现性将无法保证,对科学计算、测试基准与结果审计都有实际影响。
2026-11-01 ~ 2026-11-01 · 9 条相关
一手来源
- GPU 专家激辩:CUDA 原子操作为何存在指纹般的不确定性 — mike64_t ·
- 计算领域无人重编译 PTX:fat binary 让 cubin 指令调度彻底固化 — mike64_t ·
- NVIDIA 工程师详解 CUDA fat binaries:PTX 只是虚拟 ISA 非最终重编译 — matiasgoldberg ·
- GPU 专家之争:驱动版本会改变设备端代码指纹吗 — matiasgoldberg · 2026-11-01
- 驱动版本改写最终 ISA:GPU 指令顺序重组可改变执行行为 — matiasgoldberg · 2026-11-01
- 【源头】计算领域无人重编译 PTX:fat binary 让 cubin 指令调度彻底固化 — mike64_t · 2026-11-01
- 【源头】NVIDIA 工程师详解 CUDA fat binaries:PTX 只是虚拟 ISA 非最终重编译 — matiasgoldberg · 2026-11-01
- GPU 只保证结果值不保证周期数:原子操作因此全凭运气 — matiasgoldberg · 2026-11-01
- PTX 不保证二进制稳定:驱动可随时改写已编译 cubin — matiasgoldberg · 2026-11-01
- 原子操作结果随指令数摇摆:600 条还是 599 条无人保证 — matiasgoldberg · 2026-11-01
- 【源头】GPU 专家激辩:CUDA 原子操作为何存在指纹般的不确定性 — mike64_t · 2026-11-01
- 开发者激辩 CUDA 指令延迟:原子操作从 ISA 模型层面就是变延迟 — mike64_t · 2026-11-01