仕事を受け取る
CPU側で作られた命令列、実行するプログラム、画像や配列などの入力データ、結果の保存先を受け取ります。
LESSON 05 ・ PARALLEL PROCESSING
は、同じ形の計算を大量のデータへ並行して適用することが得意な処理装置です。
THE GPU'S ROLE
GPUは画像を計算できますが、最終的に光を出すディスプレイとは別の装置です。このページでは計算する側だけを扱います。
CPU側で作られた命令列、実行するプログラム、画像や配列などの入力データ、結果の保存先を受け取ります。
大きな仕事を多数の小さな処理へ分け、多数の演算器で同じ命令を異なるデータへ適用します。
計算した画素、行列、物理量などをビデオメモリや主記憶へ書き、CPUや次のGPU処理が使えるようにします。
フレームバッファから映像信号を送り、CRT・LCD・OLEDが光を作る仕組みは、出力装置教材の「表示デバイス」で扱います。
A JOB'S JOURNEY
GPUは単独でアプリ全体を進めるのではなく、CPU、主記憶、ドライバ、ビデオメモリと協調します。
非同期処理:CPUはGPUへ仕事を登録した後、完了を待つ間に別の仕事を進められます。結果が必要な場所では同期して、書き込み完了を確認します。
CPU AND GPU
| 観点 | CPU | GPU |
|---|---|---|
| 基本方針 | 少数の高機能なコアで、複雑な流れを速く進める | 多数の処理単位で、似た計算を大量に並行する |
| 得意 | OS、アプリの進行、分岐の多い処理、短い仕事 | 画素、頂点、行列、粒子など同じ形の大量計算 |
| 制御 | 分岐予測や大きなキャッシュで1本の処理を素早く進める | スレッド群をまとめ、同じ命令を効率よく実行する |
| 待ち時間 | キャッシュでデータ待ちを減らす | 待っているグループから、実行可能な別グループへ切り替える |
| 関係 | 仕事を準備してGPUへ依頼する | 依頼された部分を処理し、結果を返す |
CPUコアとGPUの処理単位は、機能、命令の実行方法、数え方が異なります。「GPUに何個あるからCPUの何倍」という単純な比較はできません。実際の速さは処理内容とデータ転送にも左右されます。
INSIDE THE GPU
名称とまとまり方は製品ごとに異なりますが、初心者向けには四つの役割で捉えられます。
実行できるスレッド群を選び、計算チームへ割り当てます。データ待ちのグループがあれば、別のグループを進めます。
加減算、積和、比較、論理演算などを行います。多数の演算器が同じ種類の命令を別々の値へ適用します。
各スレッドの途中結果や、近くのスレッド同士で再利用する値を、演算器の近くへ一時保持します。
は大きな入力と結果を保持します。キャッシュはよく使う範囲を近くへ複製して待ち時間を減らします。
MINI PARALLEL LAB
8つのレーンが、配列Aと配列Bの同じ位置を担当します。読み込み、加算、書き戻しを段階表示します。
A + B → C
各レーンは担当番号だけが異なり、全員が同じ ADD 命令を実行します。
待機中:8レーンへ同じ命令を配ります。
結果 C:[?, ?, ?, ?, ?, ?, ?, ?]
本物のGPUは、はるかに多くのスレッドを階層的にまとめて実行します。この模型は「同じ命令、異なるデータ」という中心部分だけを示します。
GRAPHICS BOUNDARY
画像表示を一続きに見ながらも、計算と出力を分けることが大切です。
GPUへの仕事の登録、頂点・画素・一般計算の並列実行、GPU内部のメモリ、結果の書き戻しです。
フレームバッファの走査、表示タイミングと信号、TCON・DDI、CRT・LCD・OLEDが光を作る原理です。
WORKLOADS
多数の頂点や画素へ座標変換、陰影、色、テクスチャ処理を適用します。
動画の圧縮・展開、拡大縮小、色変換、ノイズ除去などを多数の画素へ適用します。
ニューラルネットワークで繰り返す行列の積和演算を、多数の計算器で処理します。
流体、粒子、天気、分子など、多数の要素へ同じ式を繰り返す計算を行います。
フィルタ、変換、合成、機械学習モデルの推論を大量の画素や特徴量へ適用します。
結果同士の依存が少なく、小さな同種の仕事へ分けられる処理をGPUプログラムで実行します。
LIMITS
プログラムの準備、命令登録、データ転送、完了待ちには時間がかかります。数回の足し算ならCPUで終える方が速い場合があります。
演算器の数や理論上の演算回数だけでなく、メモリ帯域、キャッシュ、実行グループの使われ方、電力・温度制限が実効性能を決めます。
GPUは「画面そのもの」ではなく、画像や数値を計算する処理装置です。画像表示に使わない計算もでき、反対に表示装置はGPUがなくても別の表示制御回路から信号を受け取れます。
CHECK
多数の画素や配列要素へ、同じ加算、変換、比較などを適用することです。担当するデータだけを変え、多数のスレッドが並行して進めます。
CPUがアプリ全体を進めてGPU向きの仕事を登録し、GPUが大量並列部分を実行して結果をメモリへ書き戻します。
同じ命令をまとめて進めるスレッドが別々の道へ分かれると、一方を実行している間に他方が待つ場合があるからです。
フレームバッファ、表示コントローラ、映像信号、表示駆動回路、CRT・LCD・OLEDなどの表示デバイスが必要です。
GPUが作った画素データを、表示回路がどのように送り、表示デバイスがどのように光へ変えるかを学びます。
出力装置のいろいろへ →