根据定义flop_sp_efficiency
达到峰值单精度浮点运算的比率
CUDA 手册在这里介绍了 FLOPS 。度量收益率比率,例如 10%。这引发了关于“峰值”一词的两个问题:
1-这是硬件特定的值吗?因此,nvprof 应该知道,为了计算比率,并且对于在特定设备上运行的所有应用程序,分母应该是恒定的?按照说明书,就是No_CUDA_cores * Graphic_clock_freq * 2
。那是 nvprof 设置分母的方式吗?
2-这是否意味着在每个内核的程序运行时达到峰值?假设一个内核被调用 10 次。一次调用具有最高的 FLOPS(与硬件值无关),例如 2GFLOPS。然后计算效率sum(FLOPS_i)/10
,给出 10 次调用的平均 FLOPS,然后将该平均值除以 2,得出该内核的 FLOPS 效率。在这个假设下,一个内核可能达到 2 GFLOPS,而另一个内核可能达到 4 GFLOPS。我这么说是因为该指标是在 nvprof 中按内核报告的。
对此有何评论?