2017-10-18 62 views
0

我試圖編譯一個子程序FORTRAN爲$ ACC常規SEQ 我收到以下錯誤消息編譯器錯誤PGI OpenACC的「pgf90_mzero8」未定義

/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93)!錯誤:標識符 「pgf90_mzero8」 是 「/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0」 的編譯

PGI編譯器版本17.4

文本情況下

檢測未定義

1錯誤

子程序XX(ndime,pgaus,YY) $!ACC常規SEQ
隱無 整數(4):: ndime,pgaus 實(8):: YY(ndime,ndime,pgaus)

YY = 0.0

端子程序XX

回答

1

這是一個已知的問題。我假設你在你的代碼中使用數組語法清零數組,例如「arr = 0.0d0」。前端編譯器可以識別這種習​​慣用法,並用優化的運行時例程取而代之。這很早就發生在編譯之前,編譯器知道這段代碼將被編譯到設備中。不幸的是,我們還沒有將這個運行時間例程移植到設備上,從而導致錯誤。

最簡單的解決方法是使用「-Mnoidiom」標誌進行編譯以禁用此優化。

+0

Thanks Mat我通過一個小測試案例得出了同樣的結論。 –

相關問題