赞
踩
FLOP:浮点运算次数(Floating Point Operations)
MAC:乘加累积操作数
FLOPs/S:每秒的FLOP,可视作性能
公式:
计算工具:
https://github.com/Lyken17/pytorch-OpCounter
https://github.com/sovrasov/flops-counter.pytorch
https://github.com/facebookresearch/detectron2
https://github.com/rbgirshick/yacs
https://github.com/facebookresearch/pycls
访存量是指模型计算时所需访问存储单元的字节大小,反映了模型对存储单元带宽的需求。访存量一般用 Bytes(或者 KB/MB/GB)来表示,即模型计算到底需要存/取多少 Bytes 的数据。
计算密度是指一个程序在单位访存量下所需的计算量,单位是 FLOPs/Byte。,用于反映一个程序相对于访存来说计算的密集程度。
计算访存比是每秒计算量与每秒访存量之比。
很多博客把这两个东西混淆了。
RoofLine 模型是一个用于评估程序在硬件上能达到的性能上界的模型,可用下图表示:
通常情况下Conv,BN,Pool等算子为ComputeBound,relu等算子为MemoryBound。
MomoryBond区间:
计算时间= 访存量/带宽
ComputeBond区间:
计算时间= 计算量/算力
通过这两个公式可以由实际计算时间,获取实际带宽和实际算力,再与理论带宽和理论算力做对比。
理论计算密度或者计算访存比只能用来判断单个算子属于哪个区间,再根据这个算子的计算量在模型整体中占比来估算理论性能。
访存量则需要知晓带宽,该信息取决于硬件以及当前数据类型所占字节,通常不会在python框架内计算。
Nvidia相关工具:
Nsight Compute 2020.1 - New Features | NVIDIA Developer
参考:
https://jackkosaian.github.io/files/slides/sc21_abft.pdf
https://developer.nvidia.com/nsight-compute-2020_1-new-features
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。