[Lecture 98: GPU Observability](https://www.youtube.com/watch?v=-6FlMJ-AP74) GPU Modeのセッション「Lecture 98: GPU Observability」で発表された、eBPFを用いた次世代のGPU観測・拡張技術について、情報を統合してまとめました。 --- # GPU Observability & Extensibility with eBPF ## 1. 背景と課題:GPUスタックの「ブラックボックス」問題 現代のAI/HPCワークロードにおいて、GPUは中心的な存在ですが、その内部動作の把握と制御には大きな壁があります。 * **Invisible(不可視性)**: * CUDAランタイムやドライバの多くがクローズドソース。 * ハードウェア内部のスケジューリングや詳細なメモリアクセスパターンが見えない。 * **Inflexible(硬直性)**: * ドライバのメモリ管理(UVM)やスケジューリングポリシーがハードコードされている。 * 個別のアプリケーション最適化が難しく、マルチテナント環境での公平性制御が困難。 * **既存ツールの限界**: * CUPTIやNSight Systemsは高機能だが、固定のイベントしか追跡できず、実行時オーバーヘッドが大きい場合がある。 --- ## 2. 解決策:eBPFのGPUへの導入 Linuxカーネルの柔軟性を支える**eBPF**を、GPUのユーザ空間ランタイム、カーネルドライバ、およびデバイス(ハードウェア)そのものに適用します。 ### 技術の中核:BPFTime BPFTimeは、CPU用のeBPFプログラムをGPUで実行可能な形式(PTX)に変換し、動的に注入するユーザ空間ランタイムです。 --- ## 3. 技術的詳細:3つの階層におけるアプローチ ### ① デバイス側 (Device-side eBPF) GPUのカーネル実行中に、命令レベルで介入します。 * **PTXインジェクション**: * CUDAカーネルバイナリをデコンパイルし、計測用のeBPF(PTX形式)をインラインフックとして挿入。 * ソースコードの再コンパイルや再リンクは不要。 * **最適化技術**: * **Warp-level execution**: 全スレッドではなく、32スレッド(Warp)単位でeBPFを実行し、オーバーヘッドを劇的に削減。 * **SM Load Balance**: `%smid`レジスタを読み取り、スレッドブロックがどのSMに割り当てられたかをリアルタイムで可視化。 ### ② ドライバ側 (Driver-side eBPF) NVIDIA Kernel Driver(Open RM)やUVMにプログラマブルなフックを導入します。 * **UVM(Unified Memory)の最適化**: * 標準のLRUではなく、ワークロードの特性に合わせたページ追い出し/プリフェッチ・アルゴリズムをeBPFで動的に実装。 * LLMの推論(KVキャッシュ)などの特定のアクセスパターンにおいて、標準ドライバを凌駕する性能を達成。 * **動的スケジューリング**: * タイムスライスや優先度をeBPFを通じて動的に変更し、マルチテナント環境での隔離性を強化。 ### ③ クロスレイヤー (Cross-layer correlation) CPUとGPUのイベントを、共通のeBPF Mapを介して統合します。 * **Launch Latency解析**: * CPU側でのカーネル発行(`cudaLaunchKernel`)と、GPU側での実際の実行開始時刻を正確に比較。 * ドライバ内のキュー待機時間や、リソース不足によるレイテンシを特定可能。 --- ## 4. eBPF Mapとメモリ戦略 データの保存・共有には、効率的なMap配置が重要です。 | Map配置場所 | 特徴 | 用途 | | --- | --- | --- | | **GPU HBM内** | 低レイテンシ、高帯域幅 | 頻繁に更新されるプロファイリングデータ | | **Hostメモリ内** | PCIe経由のアクセス | CPU側から頻繁にポーリングする統計情報 | | **複製(Duplicate)** | 双方向からのアクセス | CPU/GPU間でのポリシー設定の共有 | --- ## 5. 結論と将来の展望 本技術は、GPUを単なる計算アクセラレータから、**「プログラム可能で観測可能なOSコンポーネント」**へと進化させます。 * **成果**: * 既存のプロファイラ(NVBit等)よりも低オーバーヘッドな計測の実現。 * ドライバを修正・再ロードすることなく、メモリ/実行ポリシーを動的に最適化。 * **今後の展開**: * AMD(ROCm)スタックへの対応拡大。 * より高度なAIモデル(Transformer等)特化型の自動メモリ管理。