2013-04-30 28 views
0

有沒有辦法知道OpenMP中減少操作的執行順序?換句話說,我想知道線程是如何執行簡化操作的 - 是從左到右的?當數字不是2的冪時會發生什麼?OpenMP中減少操作的執行順序

回答

2

我想你會發現,OpenMP的只會減少關聯操作,如+*(或加法和乘法,如果你喜歡),這意味着它可以繼續漠視的組成部分的計算順序跨線程的減少表達式。

我強烈建議您在使用OpenMP時以相同的方式進行,試圖找出或限制執行順序,最多隻能將您的並行程序轉換爲順序程序,最壞情況下繼續爲您提供有效的隨機結果。

我不明白你對此是不是2

權力@JimCownie指出號最後一句,如+*操作不上浮點數嚴格的關聯。在第一句中,我提到的聯想操作意味着操作,當它們應用於實數時,是聯想的,但是由於現代計算機上的數字計算技術人員熟知的原因,在應用時不能關聯到浮點數

+1

約簡通常只需要一個關聯運算符,而不是可交換的。 – user57368 2013-04-30 19:57:26

+0

現在編輯顯示更正確。 – 2013-05-01 08:11:25