RustでGPUコードを書いている開発者に、互換性の確認が必要なアップデートが来ます。

2026年5月1日、Rust公式ブログがnvptx64-nvidia-cudaターゲットのベースライン引き上げを発表しました。Rust 1.97(2026年7月9日リリース予定)から、CUDA向けPTX出力の最低要件がPTX ISA 7.0 / SM 7.0に変わります。Pascal世代以前のGPUではRustのCUDAコードが動かなくなります。

この記事でわかること

  • 何がどう変わるのか
  • 影響を受けるGPUと受けないGPU
  • 移行時に必要な対応

変更の内容

https://blog.rust-lang.org/2026/05/01/nvptx-baseline-update/

Rustのnvptx64-nvidia-cudaターゲットは、NVIDIA GPU向けにPTX(Parallel Thread Execution)コードを出力するコンパイルターゲットです。PTX出力には2つのバージョン指定が関わります。

1つ目はGPUアーキテクチャ(sm_70sm_80など)です。どの世代のGPUで実行できるかを決めます。2つ目はPTX ISAバージョンです。どのCUDAドライバがPTXを読み込めるかを決めます。

Rust 1.97では、この2つの最低ラインが次のように引き上げられます。

  • PTX ISA: 7.0(CUDA 11以降のドライバが必要)
  • GPUアーキテクチャ: SM 7.0(Volta世代以降が必要)

これまではMaxwell(SM 5.x)やPascal(SM 6.x)世代のGPU向けにもPTXを生成できましたが、1.97以降はできなくなります。

なぜ引き上げるのか

背景にあるのは、コンパイラの正確性の問題です。古いGPUアーキテクチャをサポートし続けるために、Rustコンパイラにはいくつかの不具合が残っていました。正しいRustコードであってもコンパイラがクラッシュしたり、誤ったPTXを生成したりするケースがあったとRust公式ブログは説明しています。

対象となるMaxwellやPascal世代のGPUは、最も新しいものでも2017年に登場した製品です。NVIDIAも既にアクティブサポートを終了しています。古いアーキテクチャの維持に開発リソースを割くより、現行ハードウェアの正確性とパフォーマンスの改善に集中する判断です。

影響を受けるGPUと受けないGPU

影響を受けるのは、Compute Capability 7.0未満のGPUです。具体的には次の世代が該当します。

サポート対象外になるGPU(SM 7.0未満)

  • Maxwell世代(SM 5.0 / 5.2): GeForce GTX 750、GTX 970、GTX 980、GTX Titan Xなど
  • Pascal世代(SM 6.0 / 6.1): GeForce GTX 1080 Ti、GTX 1080、GTX 1070、GTX 1060、GTX 1050、Tesla P100など

引き続きサポートされるGPU(SM 7.0以上)

  • Volta世代(SM 7.0): Tesla V100、Titan V、Quadro GV100
  • Turing世代(SM 7.5): GeForce RTX 2080、RTX 2070、RTX 2060など
  • Ampere世代(SM 8.0 / 8.6): GeForce RTX 3090、RTX 3080、RTX 3060、A100など
  • Ada Lovelace世代(SM 8.9): GeForce RTX 4090、RTX 4080、RTX 4060など
  • それ以降の世代すべて

CUDAドライバについても、CUDA 11以降が必要です。CUDA 10以前のドライバ環境ではPTXを読み込めなくなります。

移行時の確認ポイント

Rust 1.97にアップデートする際、確認すべき点は-C target-cpuフラグの設定です。

-C target-cpuを指定していない場合、デフォルトがsm_70に変わります。Volta以降のGPUとCUDA 11以降のドライバを使っていれば、ビルドはそのまま通ります。ただし、Pascal以前のGPUとの互換性はなくなります。

-C target-cpu=sm_60のように古いアーキテクチャを指定している場合、フラグを削除してsm_70のデフォルトに任せるか、sm_70以上のアーキテクチャに書き換える必要があります。

-C target-cpu=sm_70以上を既に指定している場合、変更の影響はありません。

詳細な設定方法はRustのプラットフォームサポートドキュメントに記載されています。

RustでのGPUプログラミングの現状

RustからGPUを使う方法は主に2つあります。1つは今回のnvptx64-nvidia-cudaターゲットで、rustcが直接PTXを出力する方式です。もう1つはRust CUDAプロジェクトで、NVVM IRを経由してNVIDIA GPU上でRustコードを実行します。

どちらもno_stdクレートの利用やRustの型安全性をGPU上で活かせる点が特徴です。AI/MLワークロードでCUDAカーネルを書く場面では、C/C++の代替としてRustを選ぶ開発者が増えています。今回のベースライン引き上げは、その基盤をより堅牢にするための一歩です。

対応が必要なケースのまとめ

今回の変更で対応が必要なのは、Pascal以前のGPUをターゲットにしている場合と、CUDA 10以前のドライバ環境を使っている場合の2つです。該当しなければ、Rust 1.97へのアップデートで問題は起きません。

リリースは2026年7月9日の予定です。CIやビルドスクリプトで-C target-cpuを明示している場合は、事前に値を確認しておくと安心です。