宇宙誕生の少し前から宇宙終焉の少し先までを数で表す論文

この宇宙を数で表すことは出来るのか。

第2-6節 CPUとGPUの協調動作


第2章 GPUの仕組み

第2-6節 CPUとGPUの協調動作

現代のコンピュータでは、
CPUとGPUはどちらか一方だけで処理を行うのではなく、
役割分担をしながら協調動作しています。

CPUとGPUの基本的な役割

  • CPU:制御・判断・順序立てた処理
  • GPU:大量データの並列演算

CPUはプログラム全体の流れを管理し、
GPUは計算量の多い部分を集中的に処理します。

処理の流れ(概念)

CPUとGPUの協調動作は、
概ね次の手順で行われます。

  1. CPUが処理内容を準備する
  2. 必要なデータをGPUメモリへ転送する
  3. GPUカーネル(並列処理)を起動する
  4. GPUが計算を実行する
  5. 結果を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がどのような分野で使われているのかを解説します。


→ 第2-7節 GPUの応用分野