# eGPU
## 定義
eGPU(extended Berkeley Packet Filter on GPU)とは、[[eBPF]] プログラムを GPU カーネル内部で実行させることで、GPU デバイス上のイベントをプログラマブルに観測・拡張する技術・パラダイム。主に [[bpftime]] プロジェクトによって実装され、NVIDIA/AMD/Intel GPU 上で PTX/SPIR-V 注入により稼働中のカーネルに eBPF プログラムを動的に埋め込む。(Source: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]])
## 横断的知見
- **GPU 計装は「ホスト側傍受」「ベンダーツール」「PTX 注入 eBPF」の 3 層に整理される**: [[@2025__YAPC Fukuoka 2025__SREのためのテレメトリ技術の探究]] は GPU ゼロコード計装を (1)CUDA API 層(uprobes/libcudart.so)、(2)GPU ドライバ層(tracepoints/kprobes)、(3)GPU 内部層(PTX 注入 eBPF)の 3 層に整理する。eGPU は第 3 層に位置し、非同期実行時でも GPU 内部基準の時刻とワープ/スレッド単位の粒度を提供する。(Source: [[@2025__YAPC Fukuoka 2025__SREのためのテレメトリ技術の探究]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]])
- **eGPU はホスト側 eBPF の死角を補う方向で進化している**: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]] 等のホスト側 eBPF ベース手法は SM 利用率などの GPU マイクロアーキテクチャ内部情報はハードウェアカウンタに依存すると認めていた。eGPU は PTX 注入でカーネル出口・メモリアクセス・スレッドインデックス等を直接取得し、その死角を埋める。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]])
- **eBPF ベンダー非依存性が GPU 分野でも重視される**: eGPU ブログ記事は CUPTI/Nsight/NVBit/NEUTRINO を「高オーバーヘッド・閉じたイベントモデル・ベンダーロックイン」として批判し、eBPF のセキュアサンドボックスと CPU/GPU 統一プログラミングモデルを対比する。これは eInfer 等のベンダー非依存 GPU 観測性研究と同じ動機を共有する。(Source: [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]])
- **実装はユーザ空間 eBPF ランタイム(bpftime)を基盤にしている**: eGPU は bpftime のユーザ空間 eBPF 実行環境を活用し、カーネル空間を介さずに GPU カーネルへの計装を実現する。これにより、既存の libbpf/LLVM ツールチェーンを流用しつつ、CUDA/SYCL ランタイムのユーザー空間フック(`LD_PRELOAD`)と JIT コンパイルを組み合わせる。(Source: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[bpftime]])
## 未解決の問い
- eGPU と NVIDIA/AMD/Intel 各ベンダーのハードウェアカウンタ・デバッグ機能はどのように併用すべきか。
- 大規模分散 LLM 学習・推論において、ノード間 NCCL 通信と GPU 内部 eBPF イベントをどう相関させるか。
- eBPF verifier が GPU の SIMT 実行モデルに対してどの程度の安全性保証を与えられるか。
- 本番環境での常時計装時のオーバーヘッドとサンプリング戦略の最適値は何か。
## 関連
- ソース: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] / [[@2025__eunomia.dev__The GPU Observability Gap - Why We Need eBPF on GPU devices]] / [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]]
- エンティティ: [[bpftime]] / [[eunomia-bpf]] / [[Yusheng Zheng]] / [[NVIDIA]] / [[AMD]] / [[Intel Corporation]]
- 概念: [[eBPF]] / [[GPU観測性]] / [[PTX 注入]] / [[CUDA]] / [[CUDA API トレース]] / [[uprobe]] / [[動的計装]] / [[ハードウェアカウンタ]]
- 関連 MOC: [[AI Infra Telemetry - MOC]]