NVIDIA/cuda-rust
NVIDIA's CUDA platform for Rust. Host runtime crates plus Tile (cutile-rs) and SIMT (cuda-oxide) kernel programming models in idiomatic Rust.
解決する課題
C++やドメイン固有言語 (DSLs) を使用する代わりに、純粋なRustでGPUカーネルを記述できるようにします。カスタムコンパイラバックエンドを提供することで、外部言語バインディングの必要性を排除し、ホストコードとデバイスコードを同一ファイル内に共存させることで、高性能なCUDAアプリケーションの開発を簡素化します。
仕組み
このプロジェクトは、Rustコードを直接CUDA PTXにコンパイルするカスタム rustc バックエンドを実装しています。ネイティブなRustコンパイルパイプライン (Rust $\rightarrow$ Rust MIR $\rightarrow$ Pliron IR $\rightarrow$ LLVM IR $\rightarrow$ PTX) を使用します。メモリ管理とカーネル起動のためのホスト側ランタイムに加え、型安全なインデックス作成、共有メモリ、warp/cluster操作のためのデバイス側抽象化が含まれています。
対象ユーザー
GPUプログラミングにおいてRustの安全性と表現力を求めるシステムプログラマーやAI研究者、特にNVIDIAハードウェアをターゲットとする開発者。
ハイライト
- 単一ソースコンパイル: ホストコードとデバイスコードを1つのファイルで管理し、単一のコマンド (
cargo oxide build) でビルド可能。 - 純粋なRustカーネル: 単相化 (monomorphization) を伴うジェネリック関数や、キャプチャ付きのクロージャをサポート。
- 包括的なGPUサポート: スレッド/warp操作、共有メモリ、バリア、TMA、クラスターを含むCUDAイントリンシックへの完全なアクセス。
- 高度な相互運用性: LTOIRを介したRustとC++/CCCLのデバイス側FFI相互運用をサポート。
- 非同期ランタイム: 構成可能な非同期GPU操作のための
cuda-asyncレイヤーを提供。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト