You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

推导各类FP16运算的算术强度:基于NVIDIA GPU性能指南的技术问询

FP16运算算术强度推导(基于NVIDIA GPU性能背景指南)

以下是NVIDIA GPU性能背景指南中列出的FP16数据运算算术强度:

#运算类型算术强度通常受限于
1全连接层(4096输出,1024输入,批量大小512)315 FLOPS/B计算能力
2全连接层(4096输出,1024输入,批量大小1)1 FLOPS/B内存带宽
33×3窗口、步长为1的最大池化2.25 FLOPS/B内存带宽
4ReLU激活函数0.25 FLOPS/B内存带宽
5层归一化< 10 FLOPS/B内存带宽

已完成第2项的推导:

  • 浮点运算数(Flops)= 2 操作 × 1024 输入 × 4096 权重
  • 内存访问量(Memory)= 2 字节 × (1024 输入读取 + 1024×4096 权重读取 + 4096 输出写入)
  • → 算术强度(Flops/Memory)≈ 1 FLOPS/B

剩余4项的推导方法如下:

1. 全连接层(4096输出,1024输入,批量大小512)

全连接层每个样本的输出由输入向量与权重矩阵的乘加操作构成(每个元素对应2 FLOP),权重在批量内共享:

  • 浮点运算数:批量512,总Flops = 512 × 2 × 1024 × 4096 = 4,294,967,296 FLOPs
  • 内存访问量:FP16每个元素占2字节,需读取512个输入样本(512×1024元素)、权重矩阵(1024×4096元素),写入512个输出样本(512×4096元素)。总内存字节数=2×(512×1024 + 1024×4096 + 512×4096)=13,631,488字节
  • 算术强度:4,294,967,296 ÷ 13,631,488 ≈ 315 FLOPS/B

3. 3×3窗口、步长为1的最大池化

针对大尺寸输入特征图(N×C×H×W,FP16),步长1的3×3池化输出尺寸近似等于输入尺寸,且输入元素可通过缓存复用:

  • 浮点运算数:每个输出元素对应9个输入元素的比较操作,按9 FLOP计算,总Flops≈N×C×H×W×9
  • 内存访问量:读取输入元素(仅全局内存读一次)+ 写入输出元素,总内存字节数≈2×(N×C×H×W + N×C×H×W)=4×N×C×H×W字节
  • 算术强度:(9×N×C×H×W) ÷ (4×N×C×H×W)=2.25 FLOPS/B

4. ReLU激活函数

ReLU为逐元素运算,执行max(x,0)操作:

  • 浮点运算数:每个元素对应1次比较运算,总Flops=N×C×H×W×1(N为批量,C×H×W为特征尺寸)
  • 内存访问量:读取全部输入元素+写入全部输出元素,总内存字节数=2×(N×C×H×W + N×C×H×W)=4×N×C×H×W字节
  • 算术强度:(N×C×H×W) ÷ (4×N×C×H×W)=0.25 FLOPS/B

5. 层归一化

层归一化针对每个样本的特征维度做均值、方差计算,再执行归一化与缩放偏移,以输入N×C(批量N,特征维度C)为例:

  • 浮点运算数:单样本需计算均值(C次运算)、方差(3C次运算)、归一化(2C次运算)、缩放偏移(2C次运算),总Flops=N×8C=8NC
  • 内存访问量:读取输入、缩放因子、偏移,写入输出,总内存字节数≈2×(NC + C + C + NC)=4NC+4C(批量较大时近似4NC)
  • 算术强度:8NC ÷ 4NC=2 FLOPS/B,若考虑数值稳定的额外运算或小特征维度场景,强度会略有提升,但始终低于10 FLOPS/B,符合指南范围。

内容的提问来源于stack exchange,提问作者dabanana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:15:56