1.5. 计算复杂度/性能¶
1.5.1. 操作数相关指标¶
操作数或运算次数通常用于衡量处理器的性能, 也可以用于衡量算法的复杂度.
当用于衡量处理器性能时, 通常用 操作数/每秒 (Operations Per Second, OPS)表示处理器每秒所能执行的操作次数, 用 浮点运算次数/每秒 (FLoating-point Operations Per Second, FLOPS) 表示处理器每秒所能执行的浮点运算次数. 有时也用 OPS@FPx
来表示处理器的 x
位浮点数处理能力, 如 1TOPS@FP16
表示半精度浮点数下的浮点数运算能力为 1TOPS
, 其中, FP
表示浮点数(Float Point) , 不加说明时, , 下 表 1.9 给出了其它单位的值.
单位 |
中文 |
英文 |
值 |
---|---|---|---|
一百万 |
Mega |
||
十亿 |
Giga |
||
一万亿 |
Tera |
||
一千万亿 |
Peta |
||
Exa |
|||
Zetta |
|||
Yotta |
提示
通常用 表示64位(bit)双精度浮点数, 表示32位(bit)单精度浮点数, 表示16位(bit)半精度浮点数, 表示8位(bit)浮点数, 表示64位(bit)整数等等.
一般地, , 不过不是总能成立, 有的处理器略有差异. 此外, 一个 的处理器的16位整数运算性能略大于 .
当用于衡量算法的复杂度时, 通常用 操作数 (OPerations, OPs)表示算法所需要执行的操作次数, 用 浮点运算次数 (FLoating-point OPerations, FLOPs)表示算法所需要执行的浮点运算次数.
1.5.2. 处理器的衡量指标¶
传统指标¶
操作数(Operations Per Second, OPS): 即每秒执行的操作次数
浮点运算次数(FLoating-point Operations Per Second, FLOPS): 即每秒执行的浮点运算次数
单位: 一百万(Mega, ), 十亿(Giga, ), 一万亿(Tera, ), 一千万亿(Peta, )
1.5.3. 计算平台与模型性能指标¶
衡量一个计算平台或模型的性能指标可以通过计算量(算力/运算量) 与访存量(内存读写带宽/内存读写量) 以及计算强度 来分析. 通常地, 计算强度定义为
当评估计算平台性能时, 表示计算平台的算力, 即每秒可执行的运算次数 (Operations Per Second, OPS), 表示计算平台内存带宽, 单位通常为 bps(bit per second); 当评估模型性能时, 表示模型计算量, 即需要执行的运算次数 (OPerations, OPs), 表示内存读写量, 单位通常为字节 B (Byte).
举个例子, 图 1.44 给出了SSD300网络的各层计算量与内存访问量分析结果, 包括输入输出大小, 参数量 (params), 乘累加量 (Fused multiply–add, Madd), 浮点数运算量 (FLOPs) 以及内存读写量 (MemR+W).

图 1.44 SSD 300 网络计算量与内存访问量分析¶
由 图 1.44 知, SSD300网络含有 个参数, 内存占用为 , 总乘累加次数为 , 总浮点运算次数为 , 见 表 1.10. 即对于每张 大小的图片, 前向推理一次需要的浮点数运算量约为 访存量为 , 故 SSD300 模型的计算强度为 .
Total params |
Total memory |
Total MAdd |
Total FLOPs |
Total MemR+W |
---|---|---|---|---|
26,285,486 |
207.65MB |
62.78G |
31.44G |
542.79MB |
昇腾处理器Ascend 310的开发套件的内存为8GB, 远大于SSD300网络的内存占用量(207.65MB), 内存规格为LPDDR4x, 带宽为 . 昇腾处理器Ascend 310的浮点数处理能力为 , 即 , 亦即 . Ascend 310 处理器的计算强度为 . 由此可知, Ascend 310 处理器的计算强度约为SSD300模型的计算强度的 倍. 然而, 计算平台的带宽为 , 即每秒读写数据量最多为 , 而SSD网络的访存量为 .