✅
デバイスによる高速化
はじめに
概要
- シラバス:E資格2024#2
- 計算高速化できるデバイスのことを勉強する
キーワード
GPU, グラフィックボード, CUDA, SIMD, MIMD, SIMT, TPU
学習内容
GPU(Graphics Processing Unit)
- 3Dグラフィックスなどの画像描写を行う際に必要となる計算処理を行う半導体チップ(プロセッサ)のこと
- ニューラルネットワークのパラメータ調整で行われる「行列の積和演算」処理が、画像描画時の行列演算と同じ処理であるため、CPUの何十倍~何百倍もの速度で計算できる
グラフィックボード
- GPUが搭載されたボード。ビデオカードとも呼ばれる
- 近年はAI・ブロックチェーン(仮想通貨のマイニング)に利用される
CUDA(Compute Unified Device Architecture)
- NVIDIAが開発・提供している、GPU向けの汎用並列コンピューティングプラットフォーム
- 従来画像処理に使われていた処理性能を汎用的な計算に流用する活用技術をGPGPU(General-Purpose computing on Graphics Processing Units) と呼ぶ
SIMD(Single Instruction, Multiple Data, シムディー)
- 単一の命令で複数のデータを処理する並列プログラミングモデル。
MIMD(Multiple Instruction, Multiple Data, ミムディー)
- 複数の命令で複数のデータを処理する並列プログラミングモデル。CPUはこれを採用している
- 各プロセッサが別々の命令を同時に実行できる
- マルチコアCPUや分散システムはほとんどMIMD
SIMT(Single Instruction, Multiple Threads)
- 1つの命令を同時に多数のスレッドに対して実行する並列計算モデルで、特にGPU(NVIDIAのCUDAなど)で採用されている方式
- CPUの並列化モデルでよく使われるSIMDに似ているが、SIMTは「スレッド単位」で制御できる柔軟性を持っている
比較
| 特徴 | SIMD | MIMD | SIMT |
|---|---|---|---|
| 命令数 | 1 | 複数 | 1(warp単位) |
| データ数 | 複数 | 複数 | 複数(スレッドごと) |
| 柔軟性 | 低(完全同じ命令) | 高(完全独立可能) | 中(分岐可能だが遅くなる) |
| 実装例 | CPUのAVX/SSE | マルチコアCPU, MPI | CUDA GPU, OpenCL GPU |
| 主な用途 | ベクトル演算 | 分散処理 | GPU並列計算 |
TPU(Tensor Processing Unit)
- Googleが開発した機械学習似特化した集積回路で、GPUと比較して数十倍高速かつエネルギー効率が高い
- 意図的に計算精度を落とす量子化を行い、16ビットや8ビットの演算器を使用している
- 演算結果を演算回路内で直接渡す「シストリックアレイ」という構造を使用することでメモリへの読み書きを大幅に減らし、低電力化を実現している
Discussion