プログラミング
RustにおけるGPUオフロード:ポータブル、安全、高速
GPU Offload in Rust: Portable, Safe, and Fast (arxiv.org)
要約
この論文は、Rustコンパイラ(rustc)とLLVMバックエンドにネイティブに組み込まれた、オーバーヘッドゼロでマルチベンダー対応のGPUコンパイルフレームワークを提案する。Rustの豊富な型システムと所有権システムを活用し、LLVMのOffloadインフラストラクチャを通じてデータ転送を効率的に管理・最適化する。本フレームワークは、ホストとデバイスターゲット間のクロスベンダーABI低下不一致といった技術的課題に対処し、手動およびコンパイラ生成のメモリ移動を安全に処理できる2パスコンパイルパイプラインを導入している。RAJAPerfでの評価により、Rustベースのソリューションが、ネイティブで手作業で最適化されたCUDAおよびHIP C++ベースラインと同等のカーネルパフォーマンスを達成できることが示された。
全文翻訳
高性能GPUプログラミングは、従来、実行効率とメモリ安全性との間で妥協を強いてきた。Rustはその厳格な所有権モデルを通じてホストCPUのコンパイル時メモリ安全性を保証するが、これを大規模並列GPU実行環境に適用するには、ベンダー固有のドメイン固有言語(DSL)を使用するか、明示的なunsafeな生ポインタに頼る必要があった。本稿では、Rustコンパイラ(rustc)とLLVMバックエンドにネイティブに組み込まれた、オーバーヘッドゼロでマルチベンダー対応のGPUコンパイルフレームワークを提案する。Rustの豊富な型システム、所有権システム、および厳密なエイリアシング保証(noalias)を活用して、LLVMのOffloadインフラストラクチャを通じてデータ転送を効率的に管理・最適化する。ホストとデバイスターゲット間のクロスベンダーABI低下不一致といった技術的課題を露呈させ、手動およびコンパイラ生成のメモリ移動を安全に処理できる2パスコンパイルパイプラインを導入する。RAJAPerfでの評価により、本rustcベースのソリューションが、ネイティブで手作業で最適化されたCUDAおよびHIP C++ベースラインに対して、競争力のあるLLVM IRをGPUカーネルに生成し、堅実なカーネルパフォーマンスを達成できることが示された。