# テンソルコア
## 定義
テンソルコア(Tensor Core)は、NVIDIA GPU に搭載された専用の行列積累算(matrix multiply-accumulate、MMA)ユニット。Volta アーキテクチャ(V100、2017 年)で初めて実用化され、主に深層学習の行列演算を高速化する目的で設計された。
NVIDIA V100 の仕様(Haidar+ SC 2018 より):
- V100 PCIe の FP16-TC 理論性能: 112 テラFLOP/秒(理論ピーク)、実用値 85 テラFLOP/秒
- 演算単位: 1 クロックサイクルで $D = A \times B + C$ を 4×4 行列として計算(64 回の FMA 混合精度演算)
- **A と B は FP16(入力)**、**C と D は FP16 または FP32(出力・蓄積)**
- **乗算は FP16 で実行し、蓄積は FP32 で行う**(FP16 均一演算より数値的に優れる)
- SM(ストリーミングマルチプロセッサ)あたり 8 個、V100 全体では 640 個
テンソルコアを使う GEMM(`hgemm-TC`)の特性:
- 正方行列 GEMM: FP64 の約 12 倍の速度
- ランク-k 更新(LU 分解で使われる tall-skinny GEMM): FP64 の約 6 倍(データ転送コストのため正方より遅い)
- FP16 均一 GEMM よりも数値安定性が高い(蓄積が FP32 のため)
## テンソルコアと HPC の関係
深層学習向けに設計されたテンソルコアをHPC の数値線形代数に適用するには技術的課題がある(Haidar+ SC 2018):
- 低精度許容の深層学習と異なり、HPC ソルバーは FP64 精度の解を要求する
- FP16 の数値範囲(最大 65,504、単位丸め誤差 5×10^-4)はアンダーフロー・オーバーフローを起こしやすい
- LU 分解のパネル分解や trsm は数値的に感度が高く、全 FP16 化は不安定になる
これらの課題を回避するため、SC 2018 では「マルチ精度 LU」を提案した。GEMM のみテンソルコアを使い、数値感度の高い計算部分(パネル分解・trsm)は FP32 に留めるという協調設計(co-design)戦略である。
## 横断的知見
- **蓄積精度が安定性を決める**: FP16-TC と FP16(均一演算)の最大の違いは GEMM の蓄積精度。FP32 蓄積により、クラスタ特異値・複素固有値を持つ行列でも反復精密化が収束する。数値安定性は「入力精度」だけでなく「蓄積精度」に大きく依存する。(Source: [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]])
- **深層学習で生まれたハードウェアが HPC を変える**: テンソルコアは深層学習のニーズに応じて実装されたが、その性能差は HPC の LU 分解にも直接適用できる。演算密度が高い GEMM ルーティンを多用する密線形代数は、テンソルコアの恩恵を最大限に受けられる応用領域である。アーキテクチャ世代(Volta→Turing→Ampere→Hopper)とともにテンソルコアの精度サポート(FP16→TF32→BF16→FP8)が拡張されており、各世代での HPC 再評価が期待される。(Source: [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]])
- **アテンション演算でのテンソルコア利用率は世代とともに向上するが 70-75% で頭打ちになる**: [[FlashAttention]] シリーズは Volta/Ampere の FP16 テンソルコア(FA1/FA2、利用率 25-73%)から Hopper の FP8 テンソルコア(FA3、FP16 で 75%・FP8 で約 1.2 PFLOP/秒)を経て Blackwell の BF16 テンソルコア(FA4、71%)へと進化した。テンソルコアスループットが 1 PFLOP/秒(H100)→ 2.25 PFLOP/秒(B200)と倍増する一方で、softmax に必要な指数関数ユニットのスループットは据え置き(16 ops/clock/SM)であり、非 MMA 演算が利用率の天井を決定する構造的制約となっている。(Source: [[@2024__arXiv__FlashAttention-3 - Fast and Accurate Attention with Asynchrony and Low-precision]], [[@2026__arXiv__FlashAttention-4 - Algorithm and Kernel Pipelining Co-Design for Asymmetric Hardware Scaling]])
- **Blackwell のテンソルメモリ(TMEM)は蓄積器のレジスタ圧力問題を解決した**: Hopper では MMA の蓄積器がレジスタに書き込まれ、タイルサイズの拡大を制約していた。Blackwell の TMEM(256 KB/SM)は MMA 出力を直接書き込む専用メモリであり、FA4 はこれを活用して 128×128 タイル(Hopper の 64×128 の 2 倍面積)で動作する。テンソルコアの「出力先」が世代ごとに変わる(レジスタ → TMEM)ことが、アルゴリズム設計を根本的に変える。(Source: [[@2026__arXiv__FlashAttention-4 - Algorithm and Kernel Pipelining Co-Design for Asymmetric Hardware Scaling]])
## 未解決の問い
- Hopper(H100)の FP8 テンソルコアは HPC の精度要件を満たせるか。FP8 LU 分解 + IRGM の収束条件はどう変わるか
- BF16 テンソルコア(Ampere 以降)は FP16 より広い指数範囲を持つ。HPC の密線形代数ソルバーに BF16-TC は有利か
- テンソルコアの 4×4 MMA 演算単位は大規模行列の LU 分解においてどのようにタイリングされるか。高性能実装の詳細は
- Hopper の Tensor Memory Accelerator(TMA)や Blackwell の FP4 テンソルコアは混合精度ソルバーの設計をどう変えるか
- B300/GB300 で指数関数ユニットのスループットが 32 ops/clock/SM に倍増する場合、FlashAttention のボトルネック分布はどう変化するか(FA4 で指数関数がボトルネックに特定されたため)
## 関連
- 隣接 concept: [[GPU最適化]] / [[混合精度訓練]] / [[混合精度反復求解法]] / [[カーネルフュージョン]]
- ハードウェア: NVIDIA V100(Volta) / NVIDIA A100(Ampere) / NVIDIA H100(Hopper)
- 関連エンティティ: [[MAGMA]] / [[Azzam Haidar]] / [[Jack Dongarra]]
- 関連 MOC: [[分散深層学習 - MOC]]
- [[FlashAttention]] — テンソルコアの深層学習アテンション応用の代表例
## 出典
- [[@2018__SC__Harnessing GPU Tensor Cores for Fast FP16 Arithmetic to Speed up Mixed-Precision Iterative Refinement Solvers]] — SC 2018。Haidar ら。V100 テンソルコアを HPC 密線形代数ソルバーに初めて適用し、FP64 比 4× 高速化を実証
- [[@2024__arXiv__FlashAttention-3 - Fast and Accurate Attention with Asynchrony and Low-precision]] — FA3。FP8 テンソルコアを Hopper でアテンションに適用。ブロック量子化で数値誤差 2.6× 改善
- [[@2026__arXiv__FlashAttention-4 - Algorithm and Kernel Pipelining Co-Design for Asymmetric Hardware Scaling]] — FA4。Blackwell TMEM + 2-CTA MMA モードでアテンションカーネルを再設計