FLOPS、MAdds、MACC指标

FC、Conv等FLOPS计算

  • FLOPS, floating point operations per second. 每秒的浮点运算数。
  • MADD、MACC(multiply-accumulate operations):先乘起来再加起来的运算次数。
y = w[0]*x[0] + w[1]*x[1] + w
### MACFLOPS的定义及区别 #### 定义 - **MAC (Multiply-Accumulate)** 是一种基本的操作单元,表示一次乘法操作加上一次加法操作。这种操作广泛应用于信号处理、神经网络等领域中的矩阵运算中[^3]。 - **FLOPS (Floating Point Operations Per Second)** 表示每秒钟可以完成的浮点运算次数,用于衡量计算机硬件(如CPU或GPU)的计算性能。它是评估处理器执行浮点运算效率的重要指标[^1]。 #### 关系 - 一个MAC操作由一个乘法一个加法组成,因此理论上每一个MAC操作相当于两次浮点运算(即2 FLOPs)。这意味着,在讨论模型计算复杂度时,MACs的数量通常是FLOPs数量的一半。 #### 区别 - **用途不同**: FLOPS主要用于描述硬件设备的整体计算能力;而MAC则更多用来分析算法特别是深度学习模型内部的具体计算需求[^4]。 - **测量对象差异**: 尽管两者都涉及数值计算,但是FLOPS关注的是时间维度上的吞吐率(单位时间内能做多少次运算),而MAC侧重于空间维度上单步具体指令所包含的工作量[^5]。 ```python # 示例代码展示如何估算简单卷积层的MACs与理论对应的FLOPs def estimate_macs_and_flops(input_size, output_size, kernel_size): macs = input_size * output_size * kernel_size**2 # 假设stride=1,padding=same等情况简化计算 flops = 2 * macs # 每个MAC对应约两倍的FLOP return macs, flops input_channel = 64 output_channel = 128 kernel_dim = 3 mac_operations, floating_point_ops = estimate_macs_and_flops(input_channel, output_channel, kernel_dim) print(f"Estimated MACs: {mac_operations}") print(f"Equivalent Estimated FLOPs: {floating_point_ops}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值