RustでGPUオフロード:移植性・安全性・速度を実現

GPU Offload in Rust: Portable, Safe, and Fast

RustでGPUオフロード:移植性・安全性・速度を実現

高性能GPUプログラミングは、実行効率とメモリ安全性のトレードオフを強いられてきました。Rustの所有権モデルはホストCPUではコンパイル時にメモリ安全性を保証しますが、GPUのような並列実行環境に適用するには、ベンダー固有のDSLやunsafeな生ポインタに頼る必要がありました。本論文では、Rustコンパイラ(rustc)とLLVMバックエンドに組み込まれた、ゼロオーバーヘッドでマルチベンダー対応のGPUオフロードコンパイルフレームワークを提案します。Rustの型システム、所有権システム、noaliasによる厳密なエイリアシング保証を活用し、LLVMのオフロードインフラを通じてデータ転送を効率的に管理・最適化します。ホストとデバイス間のABI低下の不一致という技術的課題を明らかにし、手動およびコンパイラ生成のメモリ移動を安全に処理する2パスコンパイルパイプラインを導入します。RAJAPerfでの評価では、ネイティブな手動最適化CUDAおよびHIP C++ベースラインと同等のカーネル性能を達成しました。

高性能GPUプログラミングは、伝統的に実行効率とメモリ安全性の間の妥協を強いられてきました。
  1. whateverboat

    このモジュールは活発に開発中です。いずれアップストリームに取り込まれれば、Rust開発者がGPU上でRustコードを実行できるようになるはずです。私たちは、デフォルトで安全で便利かつ十分に高速な、RustらしいGPUプログラミングインターフェースの開発を目指しています。これには、GPUとの間のデータ移動を効率的な方法で自動化することも含まれます。また、後ほど、より高度な制御を可能にする、より高度で、おそらくunsafeなインターフェースも提供する予定です。

    この作業に注がれた労力と努力には本当に感謝しています。しかし、このようなアプローチは、これまでC++とLLVMオフロードでは実際にはうまく機能していません。なぜRustではうまくいくのでしょうか?

  2. YuechenLi

    それで、なぜわざわざLLVMを経由するのでしょうか?代わりにMIRを直接PTXやHIP Cにターゲットすればいいのでは?

    本当にベンダーニュートラルなRust GPUソリューションを望むなら、それはすでに存在します。Vulkanバインディングを通じてCPU側のコード(バッファリング、割り当て、並行性など)を書き、HLSL/GLSL/WGSLなどからSPIR-Vでコンピュートカーネルを消費すればよいのです。現状、彼らがここでRustを使う方法は、どちらかというとTypeScriptの型やインターフェースを使うように感じられます。

    繰り返しますが、GPUで実行すべきほとんどの操作のサイズはコンパイル前に事前にわかっているので、このような面倒なことをして本質的にRust風のDSLをGPUコンピュート用に書く代わりに、コンパイル時に静的にメモリを割り当てることは十分可能です。

  3. bicepjai

    私はRustaceanなので、すべてのコードをRustで書いています。私のカスタムLLM推論エンジンのプロジェクトの多くで、最大の戦いは常にバインディングでした。バインディングを維持・作成したくありません。また、既存のバインディングを提供するプロジェクトを使う場合、所有者が更新するのを待つか、フォークしてその上でメンテナンスする必要があります。これは大きな頭痛の種でした。GPU上でRustコアを実行することは、初日から試してみたいことのように思えます。チームに敬意を表します。そして、それを注意深く見守ります。

  4. Driftbench

    所有権の追跡は、GPUメモリのライフタイムとうまく対応するはずです。これは、RustがC++に対して真の優位性を持つ点の一つです。

  5. Thomashuet

    それは有望ですが、彼らはコードを公開しましたか?アブストラクトには何も見つかりません。

この日のほかの記事

2026-08-17