# Instruction-Level Parallelism (GPU) ## 定義 instruction-level parallelism(ILP、命令レベル並列性)とは、1スレッドが独立した複数の命令(ロードや算術演算)をバックトゥバックで発行できる度合いを指す。ループアンローリングや独立演算の並べ替えにより、あるスレッドが1つの命令の完了を待たずに次の独立命令を発行できるようにすることで、GPUの実行ユニットを常時稼働させ、レイテンシを隠蔽してスループット(達成FLOPS)を高める。ILPは演算量そのものを増やすのではなく、パイプラインの遊休issueスロットを埋めることでスループットを上げる点が重要である(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。 ## 横断的知見 - ILPとoccupancyは同じ「レイテンシ隠蔽」という目的を、SM上のwarp並列性(occupancy)とwarp内の命令並列性(ILP)という異なる軸から達成する補完的手法であり、両者はスレッドあたりのレジスタ資源を奪い合うトレードオフ関係にある。本章の定量例(Blackwell)では、ILP=1で約75%occupancy(48 warp)が必要な100%利用が、ILP=4では約25%occupancy(16 warp)まで低減できるとされる。ただし実用上有効なILPには限界(概ね2〜4程度)があり、それを超えるとレジスタ圧迫と命令デコード帯域の制約で収穫逓減になる(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。 - Blackwell世代ではFP32/INT32コアが統合され、1コアが1サイクルにどちらか一方の型しか実行できなくなった。これにより従来「INT32とFP32命令を同一サイクルでデュアル発行する」形のILPは機能しなくなり、代わりに独立したFP32/FP16の組み合わせなど、混在しないデータ型でのILPやwarp/SMレベルの並行性を活用する方向へ設計指針がシフトしている。これはハードウェア世代交代がソフトウェア側の最適化パターンを直接変えた具体例である(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。 ## 未解決の問い - 本章のILP対occupancyの定量表(表8-4)は「近似値」と明記されている。実カーネルでの測定値はどの程度この近似から乖離するか。 - `torch.compile` や CUDA コンパイラの自動スケジューリングは、依存チェーンを避けた命令並べ替え(本章の `u=x*x; v=y*y; temp=u+1.0f;` の例)をどこまで自動的に行えるか。プログラマが手動でコードを並べ替える必要が残るのはどのようなケースか。 - 次章(第9章「Increasing CUDA Kernel Efficiency and Arithmetic Intensity」)ではカーネル効率と算術強度がさらに扱われる予定であり、ILPと算術強度・Tensor Core活用との相互作用がどう整理されるかは未確認。 ## 関連 - [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]] - [[Occupancy (GPU)]] - [[Warp Divergence]] - [[wiki/entities/AI Systems Performance Engineering|AI Systems Performance Engineering]] ## 出典 - Chris Fregly, *AI Systems Performance Engineering*, O'Reilly Media, 2025, Chapter 8「Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism」.