我有一些編寫fortran代碼的經驗,但我從未見過這樣的事情。添加/刪除PRINT語句更改變量
我正在使用一個大的HPC代碼(~10K行),我在修改子程序。我使用打印語句來驗證一切正確,並在必要時進行調試。當我用我使用的最後一條PRINT
聲明運行我的代碼時,代碼給了我無處不在的實數。一旦我評論這最後PRINT
聲明,代碼是給我NaN
是我的一些變數。由於我的代碼是太大了,我顯然不能張貼在這裏,但我會發布PRINT
聲明:
PRINT*, "outletBC up1 ", SUM(ABS(up(nptsx,:,:)))
其中up
是一些速度陣列。
問題:
這怎麼可能? PRINT
陳述如何可能影響任何變量?
這表示代碼中其他位置存在缺陷,可能與訪問數組越界有關。嘗試打開邊界檢查 – agentp
像@agentp說。同時檢查過程調用是否正確匹配虛擬參數和實際參數 –
@HighPerformanceMark我運行我的代碼與多個調試標誌ifort可用。我修復了所有錯誤(有些超出了數組訪問範圍),但錯誤仍然存在。 我將繼續調試代碼,但我對於理解print語句如何對代碼中的其他任何內容產生任何影響感到非常感興趣。 – solalito