2016-04-18 42 views
0

許多OpenACC教程假定編譯器/加速器將通過自動檢查依賴性並確保循環實際可並行化來檢查正確性。但是,OpenACC規範似乎沒有提及任何有關強制性正確性分析的內容。 OpenACC編譯器是否有OBLIGATED來檢查循環是否實際可並行化,如果循環不是,可以放棄?OpenACC編譯器是強制性依賴分析嗎?

回答

2

當使用「loop」指令的「auto」子句時,編譯器需要分析循環以確定它們是否與數據無關。 (參見OpenACC標準的第2.9.6節)。

對於「內核」結構中的循環,默認情況下啓用「自動」,除非使用「獨立」或「seq」子句。

對於「並行」結構中的「循環」指令,缺省情況下「自動」未啓用,因此裝飾循環被假定爲獨立。

+1

它比這強一點。在並行區域內,裝飾循環隱含地具有「獨立」子句,並且編譯器不需要執行任何分析。對於並行區域內的未修飾循環,直到編譯器。編譯器不需要分析並行區域中的未修飾的循環,但經常這樣做。 – jefflarkin