初級ではGPUを「大人数の単純作業チーム」と捉えました。中級では、なぜ大量並列で速いのか、その実行方式とメモリの仕組みを見ます。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
GPUは、多数の単純なコア(シェーダコア/CUDAコアなど)を数千個そなえ、同じ命令を別々のデータへ一斉に適用します。この方式を SIMT(Single Instruction, Multiple Threads)と呼びます。
アニメーション『CPUとGPU(少数万能 vs 大量並列)』を開く
- オフロード — CPUが全体を制御し、重い並列計算だけをGPUへ渡す(丸投げして結果を受け取る)
- VRAM — GPU専用の高速メモリ。数千コアへデータを供給するため、広いメモリ帯域が命
- スレッドの束 — 多数のスレッドをまとめ(ワープ/ウェーブ)、同じ命令で流す
登場人物メモ:
- ※1 シェーダコア/CUDAコア — GPU内の小さな演算ユニット。単純だが数が多い
- ※2 メモリ帯域 — 1秒あたりに読み書きできるデータ量。コアが多いほど帯域が効く
この部分をもっと深く(上級)
GPU の並列は、ただコアが多いだけではありません。スレッドを階層にまとめ、束ごとに同じ命令で流すのが要です。
- スレッド(※1) — 最小の実行単位。1 スレッドが 1 要素分の計算を受け持つ
- ワープ/ウェーブ(※2) — スレッドを 32(あるいは 64)本ずつ束ねた単位。この束が同じ命令を共有し、別々のデータに一斉適用する(これが SIMT の実体)
- ブロック/スレッドグループ(※3) — ワープをさらにまとめた単位。同じブロック内は共有メモリ(オンチップの高速な作業場)と同期手段を持てる
- グリッド — ブロックの集まり。カーネル(GPU 上の関数)1 回の実行はグリッド全体に対応する
登場人物メモ(※の説明):
- ※1 スレッド — GPU では極めて軽量で、数万〜数十万を同時に抱える前提で設計されている(CPU のスレッドより桁違いに軽い)
- ※2 ワープ/ウェーブ — NVIDIA ではワープ、AMD ではウェーブフロント。命令を共有する最小の並列束
- ※3 共有メモリ — ブロック内スレッドが読み書きを共有できる高速メモリ。VRAM より速く、再利用の受け皿になる
ポイントは、命令を共有する最小単位がスレッド 1 本ではなく「束」だということ。ここから、後述の分岐発散という限界が生まれます。
やさしく言うと(初級)
CPUが「少人数の万能な料理人」なら、GPUは「大人数の単純作業チーム」。小さな計算コアを何千個も持ち、同じ計算を一斉に走らせます。

画面は無数の点(ピクセル)の集まり。それを同時に塗るのが得意なので、もともとは画面描画(Graphics)のための部品でした。
CPUとの違い
- CPU — 少数の高性能コア。分岐予測やキャッシュで複雑・逐次な処理を速く
- GPU — 多数の単純コア。同じ計算を大量並列(スループット重視)に
設計思想が逆です。CPUは1つの仕事を速く終わらせる(レイテンシ重視)、GPUは大量の仕事をまとめてこなす(スループット重視)。だから両者は役割分担し、CPUが制御役・GPUが計算役になります。
やさしく言うと(初級)
- CPU — 複雑な処理を、順序立てて、少数で
- GPU — 単純な計算を、大量に、同時並行で
「1人の天才 vs 大勢の作業員」。仕事の性質でどちらが向くかが変わります。
アニメーション『CPUとGPU(少数万能 vs 大量並列)』を開く
描画以外の使いみち
描画(グラフィックス)で培った並列演算は、汎用計算にも転用されました。これを GPGPU(General-Purpose computing on GPU)と呼びます。
- AI・機械学習 — 行列積など大量の積和演算を一括処理。学習・推論の主役
- 動画エンコード/編集 — 大量のピクセル処理を並列化
- 科学計算・シミュレーション — 流体・物理など並列化しやすい計算
こうした計算を書くための API も整いました。CUDA(NVIDIA専用)、OpenCL(汎用)、描画では Vulkan/DirectX/Metal などです。近年GPUが注目されるのは、この並列計算がAIと相性抜群だからです。
この部分をもっと深く(上級)
描画(グラフィックス)で磨いた大量並列は、汎用計算へ転用されました。これを GPGPU(General-Purpose computing on GPU)と呼びます。
- なぜ行列・ベクトルが得意か — 行列積やベクトル演算は、要素ごとの積和が互いに独立。同じ命令を大量データへ一斉適用でき、SIMT の束にそのまま乗る
- AI・機械学習 — 学習も推論も中身は巨大な行列積の連なり。だから GPU が主役になった
- 書き方の API — CUDA(NVIDIA 専用)や OpenCL(汎用)といったコンピュートシェーダ系の API で、画面描画を経ずに計算だけを走らせる
要は、「同じ計算 × 大量データ × 要素が独立」という形に落とせる問題ほど GPU が効きます。逆にこの形に落ちない問題は、次の限界に突き当たります。
やさしく言うと(初級)
同じ計算を大量に行う性質は、描画以外にも効きます。
- AI・機械学習 — 大量の掛け算・足し算をまとめて処理
- 動画のエンコード/編集 — 大量のピクセル処理
- 科学計算・シミュレーション — 並列で回せる計算
近年GPUが注目されるのは、この「並列計算」がAIと相性抜群だからです。
⚠️ うまくいかないとき
- 分岐が多い処理は苦手 — スレッドごとに進む道が分かれる(分岐ダイバージェンス)と、束で揃えられず並列度が落ちる
- 逐次依存が強い処理 — 前の結果を待つ処理はCPU向き
- メモリ帯域の壁 — 計算よりデータ供給が追いつかないと、コアが遊ぶ
- 発熱・消費電力が大きい — 大量に動くぶん電力と冷却を食う。冷却不足でクロックが落ちることも
この部分をもっと深く(上級)
GPU は万能ではありません。上級の学びどころは、得意の裏返しがそのまま限界になることです。
- 分岐発散(ダイバージェンス) — 同じワープ内で
ifの枝が割れると、ハードは各枝を順番に流し、実行しない側のスレッドはマスクされて遊ぶ。条件分岐が多いコードほど実効並列度が落ちる - メモリ律速(memory-bound) — 演算が空いているのに帯域が上限に張り付く状態。データ再利用を増やす・共有メモリに載せる・コアレスアクセスにする、で帯域あたりの有効データを稼ぐしかない
- CPU↔GPU 間の転送コスト — 多くの構成で両者は別メモリ空間。データは PCIe などを介して往復する。並列で得する量が小さいと、この転送が利得を食いつぶし、CPU 単体より遅くなる
- 逐次処理は苦手 — 前の結果を待つ依存が強い処理は、束で揃えられず並列にならない。ここは少数の高速コアを持つ CPU の領分。だから両者は役割分担し、CPU が制御とオフロードの指揮、GPU が大量並列の実行を担う
GPU を活かす条件は、裏返せばこの限界の反対側にあります。分岐が浅く/帯域に見合う再利用があり/転送コストを償却できるだけ大量で/要素が独立——この形に収まるほど、大量並列は本領を発揮します。
やさしく言うと(初級)
- 発熱・消費電力が大きい — 大量に動くぶん、電気と冷却を食う
- 並列にできない処理は苦手 — 順番に依存する処理はCPU向き
- 無くても動く — 簡単な用途ならCPU内蔵のグラフィック機能で足りることも
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. GPUが多数のコアで同じ命令を一斉に走らせる実行方式を何と呼ぶ?
問2. GPUが高い演算性能を出すために特に重要なのはどれ?
問3. CPUとGPUの設計思想の違いとして正しいのはどれ?
問4. GPUが苦手で、むしろCPUに向くのはどんな処理?
問5. GPUを使うときの「オフロード」の説明として正しいのはどれ?
問6. GPUで条件分岐が多い処理の性能が落ちやすいのはなぜ?
問7. GPUで同じ命令を共有して一斉実行する、スレッドをまとめた束を NVIDIA では何と呼びますか(カタカナで)。
問8. GPUの大量並列の力を、画面描画ではなく汎用的な計算に転用することを何と呼びますか(略語で)。