【问题标题】:How is FLOPS/IOPS calculated and what is its use?FLOPS/IOPS 是如何计算的,它的用途是什么?
【发布时间】:2014-03-06 15:31:26
【问题描述】:

我一直在关注一些关于 OpenCL 的教程,很多时候人们都用FLOPS 说话。维基百科确实解释了这个公式,但没有说明它的实际含义?例如,1 光年 = 9.4605284 × 10^15 米,但它的意思是光在一年中传播的距离。同样,FLOP 是什么意思? Answer 对类似的问题说代码 100 IOPS

for(int i = 0; i < 100; ++i)

忽略初始化,我看到 100 个增量操作,所以有 100IOPS。但我也看到了 100 个比较操作。那么为什么不是 200IOPS 呢?那么 FLOPS/IOPS 计算中包含哪些类型的算子呢?

其次,我想知道你会通过计算算法的 FLOPS 来做什么? 我问这个是因为该值特定于 CPU 时钟速度和内核数。 关于这个领域的任何指导都会非常有帮助。

【问题讨论】:

  • 您没有引用您链接到的整个答案,它实际上直接回答了您的问题:“那将是 100 个浮点运算,以及 100 个整数运算,以及一些 (100? ) 控制流/分支/比较操作。” I 代表“整数”而不是“增量”,作者将比较放在不同的类别中。
  • 但是答案在100之后有一个问号。那么这意味着什么?以及为什么与操作“i
  • 如果没有优化,将会有 100 次比较和 100 或 101 次跳转。通过优化,很难确定(编译器是否展开?),但这并不重要,因为没有人试图测量“CF/B/C”OPS。
  • 好的理解问号的原因。但是为什么要对比较进行不同的分类呢?例如,如果 d 是一个浮点数,那么 'd

标签: c++ c


【解决方案1】:

“FLOPS”代表“每秒浮点运算”,就是这样。它被用作大型、基于数字(通常是科学)运算的计算速度的度量。测量它需要知道两件事: 1.) 算法的精确执行时间 2.) 算法中涉及的浮点运算的精确数量

您可以从分析工具中获得第一个非常好的近似值,而第二个则可以从......好吧,您可能需要自己一个人在那里。您可以查看“1.0 + 2.0”等浮点运算的源代码或查看生成的汇编代码,但这些都可能会产生误导。可能有一个调试器可以直接给你 FLOPS。

重要的是要了解,对于您正在运行的系统,存在理论上的最大 FLOPS 值,然后是您的算法实际实现的 FLOPS。这两者的比率可以让你对算法的效率有所了解。希望这会有所帮助。

【讨论】:

  • 那我在问题中提到的 100 IOPS 的例子呢?
  • 如前所述,“i
  • 就像 'i + 1' 是两个整数之间的运算一样,'i
猜你喜欢
  • 2010-09-27
  • 2011-12-17
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
相关资源
最近更新 更多