0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0161(2025/06/02)Shading Units

Posted at

Shading Unitsとは

はじめに

グラフィックスカードの仕様表には「CUDA Cores 8 704」「Stream Processors 6 144」のように膨大な数が並びます。これらは一般に Shading Units(シェーディングユニット)と総称され、GPU の並列計算能力を示す象徴的な数字です。しかし「多ければ多いほど速い」という理解だけでは、実際の性能を正しく見積もれません。本稿では、抽象的なイメージからマイクロアーキテクチャレベルの厳密な構造までを解きほぐし、エンジニアが GPU 選定やプログラム最適化で迷わないための指針を提示します。


1. 抽象的に捉える Shading Units

CPU でいう「コア」がタスクの並列実行単位であるのに対し、GPU の Shading Unit はスレッドの最小演算レーンです。レンダリングでは頂点シェーダやピクセルシェーダ、GPGPU ではスカラー演算や行列演算を担当します。プログラマ視点では threadIdxlaneId が対応し、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. エンジニアが取るべき視点

  1. 並列度の指標として Shading Unit 数を把握し、カーネルのスレッド総数やブロック構成を設計する。
  2. メモリ帯域・キャッシュ最適化で ALU の稼働率を高める。Shared Memory と L2 への局所性を重視。
  3. TensorRT などのランタイムを用いて専用演算器を最大活用し、電力効率を引き上げる。
  4. ベンチマークでは 理論値 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 利用率が上がる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?