计算机体系结构 [1]:CPU/GPU/NPU算力
基本术语
OPS
Operations Per Second的缩写。
-
1 TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。
-
1 GOPS代表处理器每秒钟可进行十亿次(10^9)操作。
-
1 MOPS代表处理器每秒钟可进行一百万次(10^6)操作。
-
TOPS同GOPS与MOPS可以换算,都代表每秒钟能处理的次数,单位不同而已。
注意这里的操作并不特指float32,也可能是float16,int8,int4等。要符合实际计算时采用的数据类型。
FLOPS
Floating-point Operations Per Second的缩写。
常被用来估算芯片的计算能力,尤其是在使用到大量浮点运算的科学计算领域中。
OPS与FLOPS在AI应用中一般指乘加操作。
FLOPs
Floating-point Operations的缩写,注意s小写,表示复数。
意指浮点运算数,理解为计算量。在深度学习中,我们用FLOPs,来衡量算法/模型的复杂度。
MACs
Multiply–Accumulate Operations的缩写。
意指乘加累积操作数,同样是计算量,常常被人们与FLOPs概念混淆。实际上1MACs包含一个乘法操作与一个加法操作,等于2FLOPs。
Ghz
十亿赫兹(10^9 Hz, 10 0000 0000Hz)。
GHz是CPU的处理频率,1 GHz 表示CPU一秒有10亿次时钟震荡(电路上表现为脉冲信号)。
常见芯片算力
NPU
各个AI芯片都会宣传自己的峰值AI算力。
Apple
- A11 0.6TOPS
第一代Neural Engine,当时Neural Engine主要针对的应用是iPhone新推出的人脸识别锁屏FaceID以及人脸关键点追踪Animoji,且Neural Engine的算力并不对第三方应用开放。
- A12 5 TOPS
- A13 6 TOPS
- A14 11 TOPS
- A15 15.8 TOPS
注意这里用的是TOPS,不是TFLOPS,已知Apple的ANE(Apple Neural Engine)运算是跑的float16,则这里的OPS就是指每秒可以执行N 万亿次fp16的乘加操作。
爱芯AX630A
- 8核NPU,算力32TOPS@int4,8TOPS@int8。其中4核用于神经网络计算
- CPU 4核Cortex A53
海思Hi3559AV100
- 四核DSP+双核NNIE,算力4TOPS@8bit
- CPU 双核A73 + 三核A53
NVIDIA TX2
- GPU算力1.33 TFLOPS
- CPU 双核丹佛2和四核Cortex-A57
安霸AMBA H22
- CPU 4核Cortex-A53
安霸AMBA CV22
- CPU 4核Cortex-A53
- VPU CVFLow算力4TOPS@8bit
安霸AMBA CV5
- CPU 双核Cortex-A76
- VPU CVFLow算力16TOPS@8bit(传言)
CPU
CPU芯片一般不会宣传浮点峰值算力,但是可以根据主频,核数,指令集支持情况估算出来。
估算公式为: 核数 * 主频 * CPU单个指令周期可以处理的浮点数据个数
以Intel Core i7 9700为例(此估算方法对ARM-CPU同样适用):
- 核数:8;
- 主频:3Ghz,最大睿频4.7Ghz,姑且按3GHz算;
- 指令集最高支持到AVX2(又叫AVX256),AVX2引入了FMA操作(通过CPU-Z可以查阅到支持FMA3),由于AVX2和FMA都是支持双发射(即吞吐量=2,CPI=0.5),说人话就是一个时钟周期内可以同时开始执行两条指令。所以AVX2一次可以处理2 * 256bit的浮点数据,FMA是浮点相乘和浮点累加两个的融合操作,所以含有FMA的单元处理数据量需要翻倍。即 2(FMA) * 2(双发射) * 256 / 32 = 32个float32数据。
综上,该CPU的浮点峰值算力为8 * 3G * 32 = 768GFLOPS = 0.768TFLOPS
GPU
GPU算力计算类似CPU,虽然单核的主频低,但是核数多,以GTX1660Ti为例:
- 核数:1536;
- 主频:1.5Ghz,加速频率1.77Ghz;
- 一个时钟周期可以处理一次浮点运算。即:1次浮点乘或者浮点加运算。
综上,该GPU的浮点峰值算力为1536 * 1.5G * 1 = 2304GFLOPS = 2.304TFLOPS
总结
在实际应用中算力只能作为大致参考,代码的运行速度还受I/O,降频等因素影响。