Microsoft's Parallel Programming whitepaper描述了在各种FLOPS阈值下最优的情况,并且FLOPS率是何时应该使用特定实现的决策点。
如何在我的应用程序中度量FLOPS?
发布于 2012-05-18 21:08:17
FLOPS意味着每秒的浮点操作,测量它们就像计算执行的浮点操作的数量并除以执行这些操作所需的时间一样简单。测量时间是最容易的部分。计算操作是棘手的,通常取决于所使用的硬件平台和编译器。通常,像加法、减法和乘法这样的简单运算都是非常快的。除法要慢一点。开平方根甚至更慢。频谱中最慢的部分是超越函数,如正弦、余弦、指数和取对数。所有这些都是串联展开并迭代计算,直到达到收敛。大多数现代CPU支持融合乘法和加法( A*B+C )运算,即在单个周期内执行CPU。
考虑到这一切,很难给出一个绝对的FLOPS值。如果您的代码只执行简单的操作,那么您将获得很高的FLOPS计数。如果它做了大量的超越,那么FLOPS的数量将会低得多(最多减少100倍)。它还取决于获取/计算比率,即访问主存的频率,以及编译器在生成可从延迟隐藏中受益的代码方面有多好。
标准的FLOPS基准测试是LINPACK测试,它求解密集的线性方程组。它只使用简单的算术运算(没有超越),尽管这不足以说明CPU在复杂运算中的性能,但它仍然被用来对Top500中的超级计算机进行排名。
https://stackoverflow.com/questions/10659513
复制相似问题