如何衡量我的C#app使用的FLOPS?

时间:2012-05-18 20:47:13

标签: c# performance task-parallel-library concurrent-collections flops

Microsoft's Parallel Programming whitepaper描述了在各种FLOPS阈值下最优的情况,并且FLOPS速率是关于何时应该使用某个实现的决策点。

如何在我的应用程序中测量FLOPS?

1 个答案:

答案 0 :(得分:4)

FLOPS表示每秒浮点运算并测量它们就像计算执行的浮点运算次数一样简单,除以执行它们所需的时间。测量时间很容易。宣传操作很棘手,通常取决于硬件平台和使用的编译器。通常,加法,减法和乘法等简单操作都非常快。分工有点慢。取平方根甚至更慢。在频谱的最慢部分是超越函数,如正弦,余弦,取幂和取对数。这些都是串行扩展并迭代计算,直到实现收敛。大多数当前的CPU支持融合乘法和加法(FMA)操作,即A * B + C在一个周期内执行。

鉴于所有这一点,很难给出绝对的FLOPS值。如果您的代码只执行简单的操作,那么您将获得高FLOPS计数。如果它有很多超越性,那么FLOPS计数将会低很多(低至100倍)。它还取决于获取/计算比率,即访问主内存的频率以及编译器在生成可以从延迟隐藏中受益的代码的好处。

标准FLOPS基准是LINPACK测试,它解决了密集的线性方程组。它只使用简单的算术运算(没有超越性),虽然这不足以说明CPU在更复杂的操作中的表现如何,它仍然用于在Top500中对超级计算机进行排名。