[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等)特化型の自動メモリ管理。