Rustでcudaを使えるようになるかも?
Published on: Wed May 13 2026 00:00:00 GMT+0000 (Coordinated Universal Time)
NVIDIAが、RustにてCUDAを扱えるOSSを発表したので少し紹介します。
リポジトリ
ドキュメント
CUDAとは
CUDAはNVIDIAが提供するGPU向けの並列計算プラットフォームです。 深層学習や科学技術計算など、大量のデータを並列処理したい場面で広く使われています。 ただし従来はGPU上で動くカーネルコードを書くにはC++が事実上必須でした。 自分の研究室でも暗号計算にGPUを使っていた先輩がCUDAを用いてプログラミングをしており、拡張子が.cuになっていて感動した記憶があります。
cuda-oxide
cuda-oxideはその壁を取り除こうとするプロジェクトで、一言で言うと「純粋なRustでGPUカーネルが書けるようになるツール」です。 ただまだexperimentalらしく、正式に対応しているわけではありません。 5/7あたりにver0.1.0がリリースされた出来立てホヤホヤです。
CUDAが使えると何が嬉しいか?
簡単に言えばCUDAはGPU向けのカーネルコードを書く際のプラットフォームです。 同じ計算処理をするCPUとGPUの違いとしては
- CPUは少数の高性能コアで計算
- GPUは大量のコアで単純処理を並列処理
といった違いが挙げられます。
最近のAIブームや一昔前のマイニングブームではこの並列計算処理が重要になるためGPUが求められました。 自分は機械学習の研究をしているので機械学習について書きますが、 現在の機械学習の実行環境としてはPythonが圧倒的なシェアを持っています。 これは機械学習向けのライブラリが充実しているのが理由で、 有名なライブラリとしてはPyTorchやTensorFlowがあります。
これらの裏側では計算を高速化するためにC++、そしてCUDAが使われています。 OpenCLやVulkan Computeといった代替もありますが、ライブラリの充実度やコミュニティの大きさから、AI・HPC用途ではCUDAが事実上の標準になっています。
これまでのGPUを使えるライブラリと何が違うか
自分が気になった点として、今までRustでGPUを使ったアプリケーションは様々ありましたが(例えば自分が使ってるWeztermやZedなど)、これらとの違いはなんなのでしょうか?
調べてみたところweztermではwgpuというクレートを使用しており、これはC++などで書かれた既存のカーネルを呼び出す方式で書かれています。 つまりPyTorchなどと同じく厳密にはその言語で完結していないものでした。
他にrust-cudaと言うクレートもあり、これはCUDAカーネルを書けますが、cuda-oxideの差別化ポイントとしてはRustの言語機能をより広く使えること、シングルソースコンパイル、などがあります。 まあ何よりもNVIDIAが出した、と言う点がRustでのCUDA対応を公式が考えていると言う点で嬉しいポイントですね。
制限
現在の環境の制限として以下のものがあります。
| Requirement | Version | Notes |
|---|---|---|
| Linux | Ubuntu 24.04 tested | Other distros may work but are untested |
| NVIDIA GPU | Ampere+ (sm_80+) | Driver 545+ recommended |
| CUDA Toolkit | 12.x+ | nvcc and cuda.h must be available |
| LLVM | 21+ | Must include the NVPTX backend |
| Clang | 21+ | clang-21 — needed by bindgen for host cuda-bindings |
| Rust | Nightly (pinned) | Pinned in rust-toolchain.toml |
まだ開発中もあり、結構厳しい制限がかかっていますが少し触ってみたいです。