Upcoming Changes to Rust's CUDA Target: New Minimum Requirements for GPUs and Drivers

By
<h2 id="overview">Overview</h2><p>The <code>nvptx64-nvidia-cuda</code> compilation target in Rust enables developers to generate PTX (Parallel Thread Execution) code for NVIDIA GPUs. PTX is an intermediate assembly language that is further compiled by the CUDA driver into native machine code. Two key parameters shape the output: the <strong>GPU architecture</strong> (e.g., <code>sm_70</code>, <code>sm_80</code>) which determines hardware compatibility, and the <strong>PTX ISA version</strong> which dictates the driver version needed to load and JIT-compile the PTX. Starting with Rust 1.97, scheduled for release on July 9, 2026, the baseline for both of these parameters will increase. This change affects the Rust compiler (<code>rustc</code>) and associated tooling, making it impossible to generate PTX that works with older GPUs and older CUDA drivers.</p><figure style="margin:20px 0"><img src="https://www.rust-lang.org/static/images/rust-social-wide.jpg" alt="Upcoming Changes to Rust&#039;s CUDA Target: New Minimum Requirements for GPUs and Drivers" style="width:100%;height:auto;border-radius:8px" loading="lazy"><figcaption style="font-size:12px;color:#666;margin-top:5px">Source: blog.rust-lang.org</figcaption></figure><h2 id="new-baseline">New Baseline Requirements</h2><p>The updated minimum supported versions are as follows:</p><ul><li><strong>PTX ISA 7.0</strong>: Requires a CUDA 11 driver or newer.</li><li><strong>SM 7.0</strong>: GPUs with compute capability below 7.0 (e.g., Maxwell, Pascal) are no longer supported.</li></ul><h3 id="ptx-isa-7">PTX ISA 7.0</h3><p>PTX ISA 7.0 brings improvements in stability and feature support. By raising the baseline to this version, Rust ensures that generated PTX benefits from modern compiler infrastructure and reduces the risk of runtime errors caused by older ISA versions. Users must have a CUDA driver version 11 or later to load the generated code.</p><h3 id="sm-70">GPU Architecture SM 7.0</h3><p>SM 7.0 corresponds to NVIDIA Volta GPUs and later. Pre-Volta architectures (compute capability 6.x and below) are being dropped. These older GPUs, dating back to 2017 or earlier, are no longer actively supported by NVIDIA. By focusing on SM 7.0 and newer, Rust can allocate developer effort more effectively.</p><h2 id="reasons">Reasons for the Change</h2><p>Previously, Rust aimed to target a broad range of GPU architectures and PTX ISA versions. However, this broad support introduced several defects, including compiler crashes and miscompilations when compiling valid Rust code for older targets. Raising the baseline addresses these correctness issues and allows the Rust project to concentrate on delivering robust support for the hardware that remains.</p><p>Maintaining compatibility with older architectures—like Maxwell (SM 5.x) and Pascal (SM 6.x)—requires significant testing and workarounds. These older GPUs are no longer common in modern environments, and the effort to keep them working detracts from improvements in performance, safety, and new features for currently supported devices. The decision was made after evaluating the user impact: the most recent of the affected GPUs date to 2017 and have limited active use. Consequently, the expected disruption to the Rust ecosystem is small.</p><h2 id="impact">Impact on Users Upgrading to Rust 1.97</h2><p>When you update to Rust 1.97, the behavior of your builds depends on your current configuration and target hardware. The following scenarios outline what to expect.</p><h3 id="older-hardware">For Users Targeting Older Hardware</h3><p>If you need to generate PTX that runs on a CUDA driver older than version 11 (e.g., CUDA 10 or earlier), Rust 1.97 will no longer be able to produce compatible code. Similarly, if you rely on GPUs with compute capability below 7.0 (such as Maxwell or Pascal), the new baseline will not support these devices. In such cases, you must either:</p><ul><li>Stay on an older Rust version, or</li><li>Update your hardware and drivers to meet the new minimums.</li></ul><h3 id="modern-hardware">For Users Already on Modern Hardware</h3><p>Assuming you use a CUDA driver from CUDA 11 or later and a GPU with compute capability 7.0 or higher, the upgrade should be smooth:</p><ul><li><strong>If you do not specify <code>-C target-cpu</code></strong>: The new default becomes <code>sm_70</code>. Your build will continue to work, but the generated PTX will no longer run on pre-Volta hardware.</li><li><strong>If you currently specify an older <code>-C target-cpu</code></strong> (e.g., <code>sm_60</code>): You will need to either remove that flag (so it defaults to <code>sm_70</code>) or update it to <code>sm_70</code> or a newer architecture like <code>sm_80</code> or <code>sm_90</code>.</li><li><strong>If you already specify <code>-C target-cpu=sm_70</code> (or newer)</strong>: There should be no behavioral changes from this update. Your existing configuration remains valid.</li></ul><p>For additional guidance on building and configuring the <code>nvptx64-nvidia-cuda</code> target, refer to the <a href="https://rust-lang.github.io/rustup-components-history/" target="_blank">platform support documentation</a>.</p><h2 id="summary">Summary</h2><p>The baseline change in Rust 1.97 for the <code>nvptx64-nvidia-cuda</code> target raises the minimum PTX ISA to 7.0 and minimum GPU architecture to SM 7.0. This move eliminates longstanding defects and enables the Rust team to focus on supporting modern hardware effectively. While users with older CUDA drivers or pre-Volta GPUs will need to adapt, the overall impact is limited due to the age and declining use of such hardware. Developers targeting modern NVIDIA configurations should experience improved stability and performance with no breaking changes to their current <code>sm_70</code> or newer settings.</p>
Tags:

Related Articles