文章目录
- :one: 算力的常见指标
- :two: 算力计算
- :three: 常用链接
🚀 本文主要是聚焦于深度学习领域的 GPU的算力估计,其他类型的硬件设备如CPU可以类比参考。
1️⃣ 算力的常见指标
算力衡量主要与运算速度
和精度
这两个指标有关。
🌔速度指标常有:
指标 | 备注 |
---|---|
FLOPS | Float Operations Per Second(默认精度为FP32) |
MFLOPS | 10^6 FLOPS |
GFLOPS | 10^9 FLOPS |
TFLOPS | 10^12 FLOPS |
OPS | Operations Per Second(默认精度为INT8) |
MOPS | 10^6 OPS |
GOPS | 10^9 OPS |
TOPS | 10^12 OPS |
Compute Capability(CUDA 能力) | 英伟达GPU的一种算力等级(数值不等于TFLOPS) |
⭐️精度指标常有:
指标 | 备注 |
---|---|
FP64 | 双精度浮点 |
FP32 | 单精度浮点(FLOPS的默认精度) |
FP16 | 半精度浮点 |
TF32 | NVIDIA定义的TensorCore的中间计算格式(FP32的整数部分+FP16的小数部分) |
BF16 | 用于半精度的矩阵浮点运算,相比于FP16能提高效率 |
INT8 | 8位整型(OPS的默认精度) |
在精度换算时,可以近似地根据位数的倍数来计算。
(这个地方不太严谨,实际中要看对应精度的CUDA核有多少,如果手头参考资料有限,可以这样估计)
比如一个GPU可以操作1个FP32,在同等条件下,可以近似地认为它可以操作4个INT8,即TFLOPS ≈ \approx ≈ 4TOPS。
常常算力仅以速度指标来表示,因为此时精度指标设定为默认值(FP32/INT8)。
2️⃣ 算力计算
以GPU为例,估计算力涉及以下这些常见参数
符号 | 单位 | 备注 |
---|---|---|
n c u d a n_{cuda} ncuda | 1 | CUDA核心数 |
f b o o s t f_{boost} fboost | Hz | 加速频率(Boost Frequency) |
a a a | 1 | 单核心每时钟周期浮点运算系数(GPU常设为2:乘加运算) |
C C C | FLOPS | 浮点算力 |
❤️则一个GPU的算力可以按照如下公式估计:
C = n c u d a × f b o o s t × a C=n_{cuda}\times f_{boost}\times a C=ncuda×fboost×a
以NVIDIA GeForce RTX 2080 Ti 为例,讲解一下算力计算流程:
查询NVIDIA官网,只给出了RTX 2080 Ti的Compute capalibility等级为7.5,没有以FLOPS/TOPS为单位算力指标。
查询得到 n c u d a = 4352 n_{cuda}=4352 ncuda=4352, f b o o s t = 1.64 × 1 0 9 f_{boost}=1.64\times10^9 fboost=1.64×109,进而进行如下计算(以FLOPS为单位):
C = 4352 × ( 1.64 × 1 0 9 ) × 2 = 1.4275 × 1 0 13 C=4352\times(1.64\times10^9)\times2=1.4275\times 10^{13} C=4352×(1.64×109)×2=1.4275×1013
折算为以TFLOPS(FP32)为单位:
C T F = C / 1 0 12 = 14.275 C_{TF}=C/10^{12}=14.275 CTF=C/1012=14.275
理论计算结果与在TECHPOWERUP查询的RTX 2080 Ti算力13.45 TFLOPS较为接近。
\newline
而折算为以TOPS(INT8)为单位:
C T = C T F × 4 = 57.1 C_{T}=C_{TF}\times 4=57.1 CT=CTF×4=57.1
更进一步地,如果手头上有一台设备的算力为6 TOPS,并已知某一深度学习算法在RTX 2080 Ti上的运行速度为80帧,则可以估计出同样的算法在本设备的帧率:
F P S = 80 × 6 57.1 = 8.4 FPS=80\times\frac{6}{57.1}=8.4 FPS=80×57.16=8.4
3️⃣ 常用链接
- TECHPOWERUP-GPU主页,比较公认的第三方技术参数查询点
- NVIDIA GeForce GPU 技术参数官网