在GPU实现中,我们需要根据GLOPS估算其性能。代码是非常基本的,但我的问题是我应该为操作“sqrt”或“mad”提供多少FLOPS,无论是1还是更多。
此外,如果1为这些操作说1 FLOP,我的代码可获得50 GFLOPS,而此GPU的理论最大值为500GFLOPS。如果我以百分比表达,我得到10%。在加速方面,我获得了100次。所以我觉得它很棒,但10%的产量似乎有点低,您怎么看?
由于
答案 0 :(得分:1)
正确答案可能是“它取决于”。
对于在不同平台上运行的代码之间的纯粹比较性能,我通常将transcendentals,sqrt,mads算作一个操作。在这种情况下,关键性能指标是代码运行的时间。几乎不可能以任何其他方式进行比较 - 你将如何比较一个超过25个周期退出的先验的硬件指令的“FLOP”计数,而数学库生成的fmad指令节也需要25个周期完成?在这种情况下,计数指令或FLOP变得毫无意义,尽管有明显的FLOP计数,但两者都在相同的时钟周期内执行了所需的操作。
另一方面,对于给定硬件上的一段代码的分析和性能调整,FLOP计数可能是一个有用的度量标准。在GPU中,通常查看FLOP或IOP计数和内存带宽利用率来确定给定代码的性能瓶颈所在。拥有这些数字可能会指向有用的优化方向。