概要
- Rust によるGPUプログラミングの メモリ安全性 と 実行効率 の両立に挑戦
- rustc および LLVM を活用した ゼロオーバーヘッド なGPUコンパイル基盤の提案
- 型システム ・ 所有権モデル ・ noalias保証 を利用した最適なデータ転送管理
- クロスベンダーABI の課題と 2段階コンパイルパイプライン による解決策
- RAJAPerf ベンチマークで CUDA/HIP C++ に匹敵するパフォーマンスを達成
RustによるゼロオーバーヘッドGPUプログラミング基盤の提案
- 従来 のGPUプログラミングでは 実行効率 と メモリ安全性 の両立が困難
- Rust はホストCPU向けに コンパイル時 メモリ安全性を保証
- GPU環境 では 所有権モデル 適用が難しく、 DSL や unsafe ポインタ利用が必要だった現状
- 本研究 は rustc および LLVM バックエンドに ネイティブ統合 された マルチベンダー対応GPUコンパイルフレームワーク を提案
- Rust の 型システム ・ 所有権システム ・ noalias保証 を活用した LLVM Offload による効率的データ転送最適化
- クロスベンダー な Host/Device ABI 不一致問題の技術的課題を分析
- 手動/自動 のメモリ移動を 安全 に処理可能な 2パスコンパイルパイプライン を導入
- RAJAPerf ベンチマークで CUDA/HIP C++ に匹敵する LLVM IR 生成と カーネル性能 を実証
技術的課題と解決策
- Host/Device間 の ABI (Application Binary Interface)不一致問題
- クロスベンダー 環境での ABIローワリング の複雑さ
- メモリ転送 の最適化
- LLVM Offload インフラを活用した データ転送管理
- Rust の 所有権 と noalias 属性による 最適化余地 の拡大
- 2パスコンパイルパイプライン
- 手動 ・ コンパイラ生成 の両方の メモリ移動 を 安全 に処理
- 型安全性 と パフォーマンス の両立
性能評価と意義
- RAJAPerf ベンチマークでの評価
- rustc によるGPUカーネルが CUDA や HIP C++ の 手書き最適化コード に匹敵する性能を発揮
- ゼロオーバーヘッド な マルチベンダー GPUプログラミング環境の実現
- Rust による メモリ安全性 と 高効率 GPUコード生成の両立可能性を提示
今後の展望
- クロスベンダー GPUプログラミングの 標準化 加速
- Rust エコシステムにおける 安全なGPU開発 の普及
- さらなる最適化 や 新規GPUアーキテクチャ への対応拡張