基本术语

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,降频等因素影响。