2012-04-26 33 views
2

我正在進行一項比較研究,在該研究中,我必須比較算法的串行和並行版本(NSGA-II算法精確爲download link here)。 NSGA-II是一種啓發式優化方法,因此取決於所產生的最初隨機數。如果使用CPU和GPU生成的初始種羣不同,那麼我無法進行公正的加速研究。費米建築可能的解決方案,我的比較研究?

我擁有一個NVIDIA-TESLA-C1060卡,它的計算能力爲1.3。根據this anwerthis NVIDIA document,我們不能指望sm_13設備始終產生符合IEEE-754標準的float(單精度)值。換句話說,就目前的設備而言,我無法對CUDA程序進行公正的加速研究,這與對應的CUDA程序相對應。

我的問題是:切換到費米架構解決問題?

+1

您在其他問題中獲得的信息應該足以讓您確定如何繼續。基本上,「這取決於」。 http://stackoverflow.com/questions/10334334/ieee-754-standard-on-nvidia-gpu-sm-13 – 2012-04-26 15:07:51

回答

3

浮點運算將在不同的體系結構上產生不同的結果,不管它們是否支持IEEE754,因爲浮點不是關聯的。即使在x86上切換編譯器通常也會得到不同的結果。這whitepaper給出了一些很好的解釋。儘管如此,你真正的問題是你有一個數據依賴算法,其中的操作取決於你生成的隨機數。所以如果你在CPU和GPU上產生相同的數字,那麼兩次運行都會遵循相同的路徑。考慮使用cuRAND,它可以在CPU和GPU上生成相同的數字。

+0

非常感謝你指導我正確的方向。 – Abhinav 2012-04-26 16:41:59