2

Microsoft 的并行编程白皮书描述了在各种 FLOPS 阈值下最佳的情况,并且 FLOPS 率是何时应使用特定实现的决策点。

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

4

1 回答 1

5

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

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

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

于 2012-05-18T21:08:16.837 回答