2011-09-08 66 views
0

我本週末升級到了OSX 10.7 Lion,現在我試圖讓所有的單元和迴歸測試都通過......但是還是有很多問題。現在我的幾個迴歸測試產生了不同的數值結果(例如小數點後第三位)。這是一個驚喜,因爲我在OSX 10.6和Linux以及各種編譯器之間得到了一致的結果(因爲我們已經應用了一些技巧來保持足夠穩定的數字來進行比較)......但是,OSX 10.7似乎產生了顯着不同的結果。當然,我們可以提高門檻,讓所有這些測試通過,但我寧願不是因爲這會削弱測試。OSX 10.7上的llvm和g ++之間的區別10.7

默認情況下,「g ++」現在被別名爲「llvm-g ++ - 4.2」。有人可以向我解釋我的g ++ vs llvm結果有什麼不同嗎?如果我想保留我的迴歸結果,我基本上必須在llvm和-ffast-math之間做出選擇嗎?

回答

1

在正常情況下,llvm-gcc-4.2和gcc-4.2之間的基本浮點計算不應該有實質性差異;一個基本的浮點操作將生成一個功能相同的代碼序列,其中包含llvm-gcc和gcc-4.2(假定爲默認編譯器標誌)。

你在提及-ffast-math;使用-ffast-math時,LLVM通常不會進行額外的優化。如果你依靠編譯器做某些轉換,那可能會造成實質性的差異。

除此之外,如果沒有真正的測試用例,真的很難說。

+0

實際上,我發現我看到的幾個差異是由於一個錯誤,所以我需要等到我的同事修復它,然後才能進行更仔細的比較。 – amos

+0

好的,我已經確認我的結果在3臺不同的機器上(Linux,OSX 10.6,OSX 10.7)都是完全一樣的,如果 - 安裝 - 數學被刪除。 – amos