提升 `nvptx64-nvidia-cuda` 目标的基准
Source: Rust Blog
Overview
nvptx64-nvidia-cuda 目标是用于 NVIDIA GPU 的编译目标。使用该目标时,最终输出为 PTX。两种版本选择决定了输出内容:
- GPU 架构(例如
sm_70、sm_80…)——决定哪些 GPU 能运行该 PTX。 - PTX ISA 版本——决定哪些 CUDA 驱动版本能够加载(并 JIT‑编译)该 PTX。
在 Rust 1.97(计划于 2026 年 7 月 9 日发布)中,nvptx64-nvidia-cuda 的基线 PTX ISA 版本和 GPU 架构将被提升。这些更改会影响 Rust 编译器(rustc)以及相关的主机工具,使得生成兼容旧 GPU 和旧 CUDA 驱动的 PTX 成为不可能。
New minimum supported versions
- PTX ISA 7.0(需要 CUDA 11 或更高版本的驱动)
- SM 7.0(计算能力低于 7.0 的 GPU 将不再受支持)
Why are the requirements being changed?
迄今为止,Rust 已经支持为广泛的 GPU 架构和 PTX ISA 版本生成 PTX。实际上,存在若干缺陷会导致有效的 Rust 代码触发编译器崩溃或错误编译。提升基线可以解决这些问题,并为剩余受支持的硬件提供更完整的支持。
移除支持会影响被移除的架构的用户。最近受影响的 GPU 架构可以追溯到 2017 年,且已不再受到 NVIDIA 的积极支持,因此此更改的整体影响预计是有限的。
维护这些旧架构的支持需要大量工作。通过移除它们,开发工作可以集中于提升当前受支持硬件的正确性和性能。
What happens when I update to Rust 1.97?
如果你需要针对不支持 PTX ISA 7.0 的 CUDA 驱动(CUDA 10 时代及更早的驱动),Rust 1.97 将无法生成兼容该环境的 PTX。
同样地,如果你需要在计算能力低于 7.0 的 GPU(例如 Maxwell 或 Pascal)上运行,Rust 1.97 将无法为这些 GPU 生成兼容的 PTX。
假设你针对的是兼容 CUDA 11 或更高版本的驱动,并使用计算能力 7.0 或更高的 GPU:
- 默认行为: 如果未指定
-C target-cpu,新默认将是sm_70,你的构建应继续工作(但将不再兼容 Volta 之前的 GPU)。 - 如果你当前指定了较旧的
-C target-cpu(例如sm_60):- 移除该标志,让其默认使用
sm_70,或 - 将其更新为
sm_70或更高的架构。
- 移除该标志,让其默认使用
- 如果你已经指定了
-C target-cpu=sm_70(或更高): 此次更新不应导致行为变化。
有关构建和配置 nvptx64-nvidia-cuda 的更多细节,请参阅平台支持文档。