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