Shading Unitsとは
はじめに
グラフィックスカードの仕様表には「CUDA Cores 8 704」「Stream Processors 6 144」のように膨大な数が並びます。これらは一般に Shading Units(シェーディングユニット)と総称され、GPU の並列計算能力を示す象徴的な数字です。しかし「多ければ多いほど速い」という理解だけでは、実際の性能を正しく見積もれません。本稿では、抽象的なイメージからマイクロアーキテクチャレベルの厳密な構造までを解きほぐし、エンジニアが GPU 選定やプログラム最適化で迷わないための指針を提示します。
1. 抽象的に捉える Shading Units
CPU でいう「コア」がタスクの並列実行単位であるのに対し、GPU の Shading Unit はスレッドの最小演算レーンです。レンダリングでは頂点シェーダやピクセルシェーダ、GPGPU ではスカラー演算や行列演算を担当します。プログラマ視点では threadIdx や laneId が対応し、SIMT(Single Instruction Multiple Threads)モデルで一斉に同じ命令を実行します。
- イメージ図: 32 本の麦わら(Shading Units)を束ねた箒が一本の Warp を掃くように、同一命令列を高速に処理する。
- 並列度の指標: 単一 GPU に数千〜数万のユニットが存在し、膨大なピクセルやニューラルネットワーク演算を「面」で処理できる。
この抽象像だけでも、GPU が映像や深層学習に強い理由を直感的に理解できます。
2. 厳密な定義と階層構造
2.1 ALU としての Shading Unit
ハードウェア的には FP32/INT32 の演算器(ALU)+レジスタが 1 ユニットです。命令デコーダや L1 キャッシュは SM(Streaming Multiprocessor, NVIDIA)/CU(Compute Unit, AMD)単位で共有され、Shading Unit はあくまでも 演算ステージのみを担います。
2.2 SM / WGP / Die の階層
Shading Unit ×128 → SM/CU → TPC・WGP → GPU Die
- SM(Ada 世代): FP32 ALU 128基、Tensor Core 4基、Warp Scheduler 2基、L0/L1 共有メモリを内包。
- WGP(RDNA4 世代): CU 2基を束ね、Wavefront 64 スレッドを同時発行。
このように、Shading Unit 数は 並列深度の最下層を表すだけで、上位階層のキャッシュ容量やスケジューラ本数が同世代内の IPC を左右します。
3. 数字が示すものと示さないもの
3.1 理論性能の算出
理論 FP32 性能 ≒ Shading Units × 2 × クロック で計算できます。RTX 4090 の場合、16 384 × 2 × 2.52 GHz ≈ 82 TFLOPS です。ここで 2 は FMA (Fused Multiply Add) が 1 サイクルで積和 2 演算を行うためです。
3.2 実効性能を決める要因
- メモリ帯域: データを供給できなければ ALU は空転する。
- キャッシュ階層: L2/L1 容量とレイテンシが畳み込み演算のヒット率を左右。
- 電力制限: 動的電圧周波数制御によりブーストクロックが頭打ちになる。
- スレッド占有率(Occupancy): レジスタ消費が多いカーネルは並列化できる Warp 数が減り、NOP スロットが発生。
つまり Shading Unit の多寡だけでは評価できず、「供給」「制御」「電力」の 3 つのボトルネックを同時に解消して初めて理論値に近づきます。
クロック: GPU が 1 秒間に繰り返す動作サイクル数。単位は GHz。理論 FLOPS は「Shading Units × 2(FMA)× クロック」で概算できる。
4. Tensor Core・RT Core との関係
近年の GPU は 専用演算器を搭載し、Shading Unit とは異なる命令セットで動作します。
- Tensor Core: 行列FMAに特化し FP16/BF16/INT8/FP8 を高速実行。TensorRT で量子化したモデルを流すと 4–16 倍の実効性能。
- RT Core: BVH 交差判定や三角形交点計算を固定機能化し、レイトレーシング時に Shading Unit の負荷を大幅に削減。
これらは "補助" ではなく 主要ワークロードをオフロードする強力なアクセラレータです。Shading Unit 数が同じでも、Tensor Core 世代が新しい方が AI 推論で圧倒的に速い、という現象はここに起因します。
TensorRT: NVIDIA が提供する推論最適化フレームワーク。モデルを INT8/FP16 へ変換し、Tensor Core を最大限活用してレイテンシと消費電力を削減する。
5. エンジニアが取るべき視点
- 並列度の指標として Shading Unit 数を把握し、カーネルのスレッド総数やブロック構成を設計する。
- メモリ帯域・キャッシュ最適化で ALU の稼働率を高める。Shared Memory と L2 への局所性を重視。
- TensorRT などのランタイムを用いて専用演算器を最大活用し、電力効率を引き上げる。
- ベンチマークでは 理論値 vs 実測値 のギャップを観測し、Occupancy Calculator や Nsight Compute でボトルネックを可視化する。
こうしたアプローチで初めて、Shading Unit の“大きな数字”を現実的なアプリケーション性能へと転化できます。
まとめ
Shading Unit は GPU の並列演算レーンを数値化したものであり、抽象的には「並列度の象徴」、**厳密には「FP32/INT32 ALU の個数」**です。しかし性能は単純比例せず、クロック、メモリ帯域、キャッシュ、電力制御、そして Tensor Core などの専用演算器の世代と統合的に考える必要があります。GPU を選定・最適化する際は、「シェーディングユニット数×クロック=理論値」という第一印象を入り口に、ボトルネック解析と専用 IP の活用で実効性能を詰めていきましょう。
SIMT: Single Instruction, Multiple Threads。GPU が 32 あるいは 64 スレッドの束に同一命令を同時発行する実行モデル。
Tensor Core: 行列演算専用のハードウェアブロック。FP16/BF16/INT8/FP8 で高効率な FMA を実現する。
Occupancy: 1 SM/CU 内で同時にスケジュール可能な Warp/Wavefront 割合。高いほど ALU 利用率が上がる。