# Occupancy (GPU)
## 定義
occupancy(占有率)とは、SM(streaming multiprocessor)上でアクティブなwarp数の、そのハードウェアが同時に保持できる最大warp数に対する割合である。occupancyが高いほど、あるwarpがメモリロード等でストールした際に、スケジューラが別の稼働可能なwarpへ即座に切り替えられるため、レイテンシを隠蔽しやすくなる。occupancy tuning(占有率チューニング)は、カーネルの起動パラメータ(ブロックサイズ・グリッドサイズ)とスレッドあたりの資源使用量(レジスタ・共有メモリ)を調整し、SMあたりの有効な並列度を最大化する実務である(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。
## 横断的知見
- occupancyは目的そのものではなくレイテンシ隠蔽の手段であり、実務上は50〜70%程度で改善が収穫逓減に達することが多い。memory boundなカーネルは高occupancyの恩恵を受けやすいが、compute boundなカーネルは50%程度の低occupancyでもTensor Core等の高スループットユニットを使えば最大性能に達しうる(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。
- occupancyとinstruction-level parallelism(ILP)はレイテンシ隠蔽という同じ目的を補完的な手段で達成する。ILPを高めるほど、100%のSM利用を達成するのに必要なoccupancyは低下する(Blackwellの例: ILP=1で約75%occupancy必要、ILP=4で約25%に低減)。両者はスレッドあたりのレジスタ資源を奪い合うトレードオフの関係にある(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。
- 1 SMあたりの最大resident warp数(64 warp/2,048スレッド)はAmpere・Hopper・Blackwellの各世代で据え置かれており、世代間の性能向上はSM数増加・キャッシュ拡大・マルチダイ化など別の要因による。ハードウェア世代が進んでもoccupancyの理論上限自体は必ずしも上がらない点は、性能チューニング時に留意すべき横断的な観察である(Source: [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]])。
## 未解決の問い
- occupancy tuningの効果は本章では説明用の例示値(illustrative)にとどまり、実データはGitHubリポジトリ参照とされている。実測ベンチマークでの改善幅はどの程度か。
- Hopper以前の世代や非NVIDIA GPU(AMD MI300等)でも、occupancy 50〜70%での収穫逓減という経験則は同様に成り立つか。
- PyTorch の `torch.compile` はどの程度自動的に良好なoccupancyを達成しているか。ユーザーが手動でoccupancy tuningに介入すべき典型的な失敗パターンは何か。
## 関連
- [[@2025__OReilly__AI Systems Performance Engineering - Chapter 8 Occupancy Tuning, Warp Efficiency, and Instruction-Level Parallelism]]
- [[Warp Divergence]]
- [[Instruction-Level Parallelism (GPU)]]
- [[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」.