关于FLOPS/FLOPs/MACs/MAdds的计算

FLOPs

FLOPs:floating point operations的缩写(s表复数),意指浮点运算次数,理解为计算量。可以用来**衡量算法/模型的复杂度。该值越大,表示该网络的计算复杂度越高。**FLOPs没有考虑几个对速度有相当大影响的重要因素——MAC(Memory Access Cost)\并行度\平台卷积层

FLOPS

FLOPS:floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标
还有其他的单位:
一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算,
一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,
一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)
一个PFLOPS(petaFLOPS)等于每秒一千万亿(=10^15)次的浮点运算,
一个EFLOPS(exaFLOPS)等于每秒一百京(=10^18)次的浮点运算,
一个ZFLOPS(zettaFLOPS)等于每秒十万京(=10^21)次的浮点运算。
GFLOPS是Paper里比较流行的单位。
GFLOPS(Giga Floating-point Operations Per Second)每秒可做浮点操作的数量,是衡量计算设备浮点运算能力的一个指标。**等价于运算速度。该值越大,说明硬件性能越高,速度越快。**量级通常在M(10e6),G(10e9),T(10e12)。例如:9.6 GFLOPS 表示每秒可做 9.6 G 次浮点操作(96亿次浮点操作)。
FLOPS局限性:FLOPS并不能完全反映硬件的计算性能,因为FLOPS并不能反应出许多对执行效能有影响的因素。例如:I/O的效能、内存的架构、快取内存一致性(cache coherence)、…等。

MACS

(Multiply–Accumulate Operations) 即乘加累积操作数,常常与FLOPs概念混淆,**实际上1MACs包含一个乘法操作与一个加法操作,大约包含2FLOPs。通常MACs与FLOPs存在一个2倍的关系。**每秒执行的定点乘累加操作次数的缩写,它是衡量计算机定点处理能力的量,这个量经常用在那些需要大量定点乘法累加运算的科学运算中,记为MACS。一个 GMACS等于每秒10亿 (=10^9) 次的定点乘累加运算

MAdds

MACs全称Multiply–Accumulate Operations,即乘加累积操作,**1MACs包含一个乘法操作与一个加法操作,大约包含2FLOPs。**通常MACs与FLOPs存在一个2倍的关系。MACs和MAdds是同一个含义。
关于神经网络利用率
假设用一个简单的CNN网络做forward时,对于硬件资源的利用情况称之为利用率,所以利用率的计算简单描述为:

  1. 计算网络的计算量,通常是乘累加的次数
  2. 测量网络运行耗时
  3. 乘累加次数除以耗时, 计算该网络的GFLOPS
  4. 用计算的网络GFLOPS除以硬件资源的理论GFLOPS,即利用率

关于神经网络的计算量

网络前向计算时,卷积运算占据耗时90%以上。重点关注下如何计算卷积的运算量。为简化问题,以下讨论认为:卷积采用滑动窗口且,忽略非线性计算的开销。
假设对于CNN网络,有卷积层的参数包括:输入 feature map 的 Cin,宽Hin,高Win,输出 feature map 的 Cout,宽Hout,高Wout,卷积核的尺寸K,卷积核通道等于Cin,卷积核个数等于Cout。则该卷积核与feature map做卷积的运算量为:
在这里插入图片描述
在这里插入图片描述

其中的1表示偏置量。偏置值每个卷积核对应1个,共有Cout 个。(wx+b)
将 FLOPS 除以 10e9 得到 GFLOPS。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值