5. FP32 と FP16
FP32 (float32、単精度) FP16 (float16、半精度)
指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット
表現可能な範囲
1.4 x 10-45 < x < 3.4 x 1038
表現可能な範囲
5.96 x 10-8 < x < 65504
従来一般的だったのはこちら 混合精度演算で使うのはこちら
6. FP16 を使うことの利点
メモリが節約できる、だけではない
"half-precision math throughput in recent GPUs is 2× to 8× higher
than for single-precision."
「最近の GPU では FP16 の演算スループットが
FP32 の 2 倍から 8 倍高い」
https://arxiv.org/abs/1710.03740
7. Tensor コア
行列演算ユニット
D = A * B + C
C,DA
B
行列積は、「小」行列積に分解できる
「小」行列積を、各 Tensor コアで計算
A’
B’
C’
行列の FMA (Fused Multiply-Add: 融合積和演算)
125 TFLOPS: NVIDIA V100 では FP32 比で 8 倍のピーク性能
312 TFLOPS: NVIDIA A100 では FP32 比で 16 倍のピーク性能NEW!