# PTX
Parallel Thread Execution。NVIDIA GPU の中間表現(IR)。[[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs|eGPU]] は eBPF バイトコードを実行時に PTX へコンパイルし、稼働中の GPU カーネルへ直接注入する「PTX インジェクション」を中核とする。PTX のセルフモディファイングコードには [[ParallelGPU OS]](POS)を利用する。(Source: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], §5.1)
## アーキテクチャ上の役割(H&P 6e 第4章)
`Computer Architecture: A Quantitative Approach`第4章は、PTXをNVIDIAコンパイラのターゲットとなる**抽象命令セット**と位置づける。PTX命令は`opcode.type d, a, b, c`という形式を取り、1本のCUDA Threadに対する演算を記述し、通常は実機命令と1対1で対応するが、1つのPTX命令が複数の機械命令へ展開されることも、逆に複数のPTX命令が1つの機械命令へまとまることもある。PTXは書き込み一回限りの無制限本数の仮想レジスタを使い、実機の有限個のレジスタへの割付・最適化(デッドコード除去・命令融合・分岐の発散/収束点の計算)はロード時にコンパイラが行う。x86のマイクロ命令への変換が実行時にハードウェアで行われるのに対し、PTX→実機命令の変換はソフトウェア・ロード時に行われる点が対照的である(Source: [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 4 Data-Level Parallelism in Vector, SIMD, and GPU Architectures]] §4.4)。
この抽象層のおかげで、GPUのハードウェア命令セットがある世代でx86的なメモリ指向からRISC-V的なレジスタ指向へ、かつアドレス幅を64ビットへと大きく変更しても、NVIDIAのソフトウェアスタックを壊さずに済んだ。同章はこれを「PTXはGPUアーキテクトに、システムプロセッサのアーキテクトより大きな実験の自由度を与える」利点として、GPUがコプロセッサであることの利点を示す事例に挙げる(Source: 同章 §4.8 Fallacy「GPUs suffer from being coprocessors」)。
## 関連
- ソース: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] / [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 4 Data-Level Parallelism in Vector, SIMD, and GPU Architectures]]
- エンティティ: [[ParallelGPU OS]] / [[CUDA]] / [[NVIDIA Pascal]]