概要
- GPU は主に 行列演算 を高速化するための計算コア群と高速メモリから構成
- 最新の ML向けGPU (例:H100, B200)は 100個以上のSM (Streaming Multiprocessor)を搭載
- 各SMは Tensor Core や CUDA Core、オンチップキャッシュを内蔵
- メモリ階層 はHBM、L2/L1キャッシュ、レジスタなど多層構造
- GPUとTPUの違い ・類似点も整理
GPUとは何か? 〜H100/B200などML向けGPUの構造〜
- GPU は大量の 計算コア (SM:Streaming Multiprocessor)と 高速メモリ (HBM)で構成
- H100 は132個、 B200 は148個のSMを搭載
- 各SMは独立性が高く、同時に多数のタスクを処理可能
- SM内には Tensor Core (行列演算専用)、 Warp Scheduler (SIMD制御/命令スケジューラ)、 CUDA Core (ベクトル演算)、 SMEM (256kBのオンチップキャッシュ)を内蔵
- B200 ではTensor Core用の TMEM (Tensor Memory)が追加され、大規模行列演算へ対応
SM(Streaming Multiprocessor)の詳細
- 各SMは4つの サブパーティション (subpartition)に分割
- 各サブパーティションに Tensor Core、 Warp Scheduler、 レジスタファイル、 CUDA Cores を搭載
- CUDA Core
- 主にSIMD/SIMTベクトル演算、ReLUや逐次演算、リダクションなどを担当
- 32個のfp32コアを含む
- 柔軟なSIMT(Single Instruction Multiple Threads)モデルを採用
- Tensor Core
- 行列積(matmul)専用の高スループットユニット
- H100では1コアあたり1024 bf16 FLOPs/サイクル、B200では約2048 FLOPs/サイクル
- 精度が低いほど(fp8等)スループットが向上
- B200では計算規模拡大のためTMEMが追加
メモリ階層
- レジスタファイル :各サブパーティションに16,384個の32bitレジスタ(合計256kB/SM)
- SMEM(L1キャッシュ) :各SMごとに256kB、共有メモリやオンチップキャッシュとして機能
- L2キャッシュ :全SMで共有、H100で約50MB、B200で126MB、バンド幅は約5.5TB/s
- SM間の協調動作が必要になる要因
- HBM :主記憶、モデル重みや中間データを格納
- H100で80GB/3.35TB/s、B200で192GB/9TB/s
- TMEM :B200から導入、Tensor Core用の専用メモリ
GPUとTPUの比較
- SM(GPU) ≒ Tensor Core(TPU)
- GPUのSMは独立性・柔軟性が高いが、1コアあたりの性能はTPU Tensor Coreに劣る
- Warp Scheduler(GPU) ≒ VPU(TPU)
- 並列ベクトル演算ユニット
- CUDA Core(GPU) ≒ VPU ALU(TPU)
- SIMD型演算ユニット
- SMEM(GPU) ≒ VMEM(TPU)
- 高速オンチップキャッシュ
- Tensor Core(GPU) ≒ MXU(TPU)
- 行列演算専用ユニット
- HBM(GPU) ≒ HBM(TPU)
- 大容量・広帯域メモリ
GPU世代ごとの主なスペック比較
| GPU | 世代 | クロック | SM数 | SMEM/SM | L2容量 | HBM容量 | HBM帯域 | bf16/fp16 FLOPs | fp8/int8 FLOPs | fp4 FLOPs | |---|---|---|---|---|---|---|---|---|---|---| | V100 | Volta | 1.25/1.38GHz | 80 | 96kB | 6MB | 32GB | 0.9TB/s | — | — | — | | A100 | Ampere | 1.10/1.41GHz | 108 | 192kB | 40MB | 80GB | 2.0TB/s | 310TF | 620TF | — | | H100 | Hopper | 1.59/1.98GHz | 132 | 256kB | 50MB | 80GB | 3.4TB/s | 990TF | 2000TF | — | | H200 | Hopper | 1.59/1.98GHz | 132 | 256kB | 50MB | 141GB | 4.8TB/s | 990TF | 2000TF | — | | B200 | Blackwell | ? | 148 | 256kB | 126MB | 192GB | 8.0TB/s | 2250TF | 4500TF | 9000TF |
- 各世代で SM数・メモリ容量・演算性能 が大幅に増加
- Blackwell世代(B200)ではTMEM追加や行列演算規模の拡大が特徴
GPUの歴史的背景と汎用性
- 元々は ビデオゲーム のためのグラフィック処理用プロセッサとして誕生
- ゲームでは三角形のラスタライズやピクセルシェーディングなど多様な負荷
- 2010年代以降、 ディープラーニング の普及で行列演算特化型へ進化
- 汎用性 の高さから新しい用途への適応力が高い
まとめ
- 最新GPU は100以上の独立SM、強力な行列演算ユニット、階層的なメモリ構造を持つ
- TPUと比較 すると、柔軟性・適応性の高さがGPUの強み
- ML/DL用途 では、低精度演算や大容量メモリによる高速処理が可能
- 世代ごとに拡張 されるSM数・メモリ帯域・Tensor Core規模が性能向上のカギ