我一直在关注OpenCL的一些教程,很多时候人们都在谈论FLOPS。维基百科确实解释了这个公式,但没有告诉它实际意味着什么?例如,1光年= 9.4605284×10 ^ 15米,但这意味着一年中光线的行进距离。同样,FLOP是什么意思? Answer对类似的问题说,代码为100 IOPS
for(int i = 0; i < 100; ++i)
忽略初始化,我看到100个增量操作,所以有100个IOPS。但我也看到了100个比较操作。那么为什么不是200IOPS呢?那么FLOPS / IOPS计算中包含哪些类型的运算符?
其次,我想知道通过计算算法的FLOPS你会做什么? 我问这个是因为该值特定于CPU时钟速度而没有内核。 关于这个领域的任何指导都会非常有帮助。
答案 0 :(得分:5)
“FLOPS”代表“每秒浮点运算”,正是如此。它用于衡量大型(通常是科学)操作的计算速度。衡量它是一个知道两件事的问题: 1.)算法的精确执行时间 2.)算法中涉及的浮点运算的精确数量
你可以从分析工具中获得第一个非常好的近似值,第二个来自......你可能在那里自己。您可以查看源代码以查看浮点运算,如“1.0 + 2.0”或查看生成的汇编代码,但这些都可能会产生误导。可能有一个调试器可以直接为你提供FLOPS。
重要的是要了解正在运行的系统存在理论上的最大FLOPS值,然后才能实现算法的实际FLOPS。这两者的比例可以让您了解算法的效率。希望这会有所帮助。