2014-03-06 24 views
0

我一直在關注OpenCL的一些教程,很多時候人們用FLOPS來講話。維基百科確實解釋了這個公式,但並沒有說明它的實際含義?例如,1光年= 9.4605284×10^15米,但它意味着光在一年內走過的距離。同樣,FLOP是什麼意思? Answer到類似的問題,說100次IOPS的代碼如何計算FLOPS/IOPS以及它的用途?

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

忽略初始化,我看到100個的增量業務,所以有100IOPS。但我也看到100個比較操作。那爲什麼不是200IOPS?那麼FLOPS/IOPS計算中包含哪些類型的運算符?

其次我想知道你會通過計算算法的FLO​​PS來做什麼? 我這樣問,因爲該值是特定於CPU時鐘速度和核心的。 在這個舞臺上的任何指導將是非常有幫助的。

+0

你沒有引用你鏈接到的整個答案,它直接回答你的問題:「這將是100個浮點運算,以及100個整數運算,以及一些(100?)控制流/分支/比較操作「。我是'整數'而不是'增量',作者將比較放在不同的類別中。 – AShelly

+0

但是答案在100之後有一個問號。那麼這意味着什麼?爲什麼分類與「i <100」的操作不同。這是不是整數操作呢? –

+0

沒有優化就會有100個比較和100或101個跳轉。通過優化,很難肯定地說(編譯器是否展開?),但這並不重要,因爲沒有人試圖測量「CF/B/C」OPS。 – AShelly

回答

4

「FLOPS」代表「浮點運算每秒」,就是這樣。它被用來衡量大型,基於數量(通常是科學)操作的計算速度。衡量它知道兩件事情的問題:1。 )你的算法 2)浮點運算的參與你的算法的精確數量的精確執行時間

你可以得到第一個相當不錯的近似值從分析工具,第二個來自......你可能會自己在那裏。您可以通過源代碼查看浮點運算(如「1.0 + 2.0」)或查看生成的彙編代碼,但這些都可能會產生誤導。可能有一個調試器可以直接給你FLOPS。

重要的是要理解,您正在運行的系統有一個理論上的最大FLOPS值,然後是算法的實際FLOPS。這兩者的比例可以讓您瞭解算法的效率。希望這可以幫助。

+0

以及我在問題中提到的100 IOPS示例如何? –

+0

如前所述,「i <100」是流量控制操作,因此「++ i」擴展爲「i = i + 1」是循環中的整數運算。 – Irisshpunk

+0

正如'i + 1'是2個整數之間的操作,'i <100'也是一個整數操作,對吧?那爲什麼它分類不同? –

相關問題