- 第2章 GPUと専用計算機の仕組み
章トップ(目次)
2-1 GPUとは何か
2-2 並列計算モデル(SIMD / SIMT)
2-3 GPUのメモリ階層と帯域
2-4 スレッド管理とスケジューリング
2-5 GPUが得意な処理・不得意な処理
2-6 GRAPE計算機の誕生
2-7 GRAPE-1の構造と思想
2-8 GRAPE-DRとASIC化
2-9 CPUとGPUの違い
2-10 専用計算機の思想とFPGAへの継承
▶ 第3章 FPGAの仕組みへ
第2章 GPUの仕組み
第2-6節 CPUとGPUの協調動作
現代のコンピュータでは、
CPUとGPUはどちらか一方だけで処理を行うのではなく、
役割分担をしながら協調動作しています。
CPUとGPUの基本的な役割
- CPU:制御・判断・順序立てた処理
- GPU:大量データの並列演算
CPUはプログラム全体の流れを管理し、
GPUは計算量の多い部分を集中的に処理します。
処理の流れ(概念)
CPUとGPUの協調動作は、
概ね次の手順で行われます。
- CPUが処理内容を準備する
- 必要なデータをGPUメモリへ転送する
- GPUカーネル(並列処理)を起動する
- GPUが計算を実行する
- 結果をCPU側へ戻す
この一連の流れは、
アプリケーションからは一つの処理に見えますが、
内部では明確に役割が分かれています。
GPUカーネルとは
GPU上で実行される並列処理の関数を
カーネルと呼びます。
CPUから
「この処理を何千・何万スレッドで実行せよ」
という形で起動されます。
同期と非同期処理
CPUとGPUの処理は、
必ずしも同時に止まって待つ必要はありません。
- GPU実行中にCPUは別処理を行う
- 必要なタイミングで同期を取る
この非同期実行を活用すると、
システム全体の効率が向上します。
データ転送のコスト
CPUとGPUは、
通常は異なるメモリ空間を持っています。
そのため、
- CPU ⇔ GPU 間のデータ転送
- PCI Expressなどのバス
が性能のボトルネックになることがあります。
GPUを使う場合は、
「計算量に対して転送量が十分小さいか」
を考える必要があります。
統合メモリ(Unified Memory)
近年では、
CPUとGPUが同じアドレス空間を
共有できる仕組みも登場しています。
これにより、
- プログラムが簡単になる
- 明示的な転送が減る
一方で、
内部の動作を理解していないと
予期しない性能低下が起きることもあります。
CPUとGPUは競合ではない
CPUとGPUは、
どちらが優れているかを競う存在ではなく、
互いの弱点を補う関係
にあります。
- CPUがなければGPUは指示を受けられない
- GPUがなければ大規模並列処理は遅い
設計上のまとめ
GPUを効果的に使うには、
- CPUで制御する
- GPUで大量演算を行う
- 転送回数を最小化する
という設計思想が重要になります。
次節では、
GPUがどのような分野で使われているのかを解説します。