Triton 3.9.0 发布,面向使用该 GPU 内核语言和编译器的开发者,新增 `tl.atomic_load`、`tl.atomic_store` 和 `tl.atomic_poll`,并加入 `tl.fdiv(..., approx=True)` 快速 FP32 除法及链式比较等语法改进。后端方面,带 `acquire`、`release` 或 `acq_rel` 语义的原子操作现在会插入 CTA 级屏障,读改写和 CAS 原子默认使用 `acq_rel`,可传 `sem="relaxed"` 避免屏障;发布说明称 NVIDIA 上批量 MMAv2 dot 最高快 40 倍。该版本还改变了 E8M0 特殊值的解码:`0x00` 从零变为 `2^-127`,`0xFF` 从无穷变为 NaN,使用这些值的核函数结果会变化。
背景
Triton 是面向 GPU 内核的编程语言与编译器,开发者用 Python 风格代码编写可在 NVIDIA 和 AMD GPU 上编译执行的内核。此前其原子能力以读改写和 CAS 为主,3.9.0 将原子加载、原子存储和按值轮询补充为独立的前端原语,因此这次变化直接影响内核源码和编译结果。
社区讨论
现有内核若依赖原子操作的内存序或使用 E8M0 的 `0x00`、`0xFF` 值,需要复查行为:原子读改写和 CAS 默认的 `acq_rel` 会引入 CTA 级屏障,必要时可用 `sem="relaxed"` 避免;E8M0 解码变化则可能改变计算结果。