目录
一、GOPS与FLOPS
1.1 FLOPS
FLOPS定义
FLOPS换算
前标的十进制与二进制
显卡FLOPS值
1.2 GOPS
1.3 FLOP与GOPS之间的换算
二、常规神经网络算力
2.1 AlexNet
2.2 ResNet-152
2.3 EIE算力
2.4 一些层的算力
三、FPGA平台上算力评估
3.1 zynqNet算力评估
3.2 MTCNN算量
是“每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能省略掉。
在这里所谓的“浮点运算”,实际上包括了所有涉及小数的运算。这类运算在某类应用软件中常常出现,而它们也比整数运算更花时间。现今大部分的处理器中,都有一个专门用来处理浮点运算的“浮点运算器”(FPU)。也因此FLOPS所量测的,实际上就是FPU的执行速度。而最常用来测量FLOPS的基准程式(benchmark)之一,就是Linpack。
一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算,
一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,
一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)
一个PFLOPS(petaFLOPS)等于每秒一千万亿(=10^15)次的浮点运算,
此处存在疑问,从M到G再到T,到底是1024近似为1000,还是采用二进制的乘以1024,还是确实为十进制的1000
倾向于FLOP的前标与内存一样,是以二进制算,每进一级是1024为单位的。
但是1024^3是1073741824,可以近似为10^9。所以采用10^3来近似1024问题不大。
显卡根据价格算力从0.7TFLOPS/s到10TFLOPS/s不等。
OPS与FLOPS类似,只不过OPS一个是操作次数,FLOPS一个是浮点操作次数。
(FLOP与GOPS之间的换算需要查相关资料,后续查找资料给出)
不确定的看法是OPS是操作数量,FLOPS为浮点操作数量,两者可近似于相等,FLOPS比OPS稍大。
据韩松毕业论文EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING P15
对于AlexNet处理224*224的图像,需要1.4GOPS
对于224*224的图像,ResNet-152需要22.6GOPS
例如对于 1080p图像(像素点个数1920*1280) 的8路 帧率为30FPS的图像。
22.6GOPS*30FPS*8路*(1920*1280/224^2)=265Teraop/sec
这个数量级为30张高端显卡。
EIE在稀疏网络上可达102GOPS/s,相当于同等级非稀疏网络的1TGOPS/s
注意这里是剪枝后的FLOP,之前的FLOP可能要乘以12
这里不懂为什么韩松不把原来的FLOP值贴出来而是只贴剪枝后的FLOP
Table 3.6: Pruning GoogleNet reduces the number of weights by 3.5x and computation by 5x.
拆分为卷积的MACC操作的次数152,731,648 ,为10^8数量级(0.1G),7z035平台上时间约为2s
假定MACC操作9乘法8加法,算作17FLOP,zynqNet总算量2,596,438,016 FLOP,即2.59GFLOPS
算力1.3GFLOPS/s(韩松EIE为102GOPS/s)
MACC次数为85,176,568次到43,543,288次不等,10^7数量级(10M),每帧运算量0.74GOPS或1.448GOPS
按照zynqNet的算力约 0.9-1.75FPS
相关内容:
深鉴科技DNNDK概览
Xilinx zynq系列FPGA实现神经网络中相关资源评估