大型運算崩潰

2021-10-09 16:38:07 字數 621 閱讀 2320

當我指定adcirc應該編寫乙個netcdf熱啟動檔案時,它在較小的測試網格(30k節點)下可以正常工作,但在較大的網格(1m節點)上出現分段違規的情況而失敗。我正在使用英特爾編譯器。但是,當我使用gfortran和gcc編譯器時,adcirc成功為兩個網格寫入了熱啟動檔案。

答:這是intel fortran處理堆疊和堆上的陣列的方式的問題。您應該使用以下編譯器標誌重新編譯adcirc和netcdf fortran庫:「 –heap-arrays 8192」,其中「 8192」是「 ulimit -s」的輸出。這將迫使intel編譯器將陣列建立的某些情況放在堆而不是堆疊上。您看到的導致崩潰的大型陣列(即,超過2m個元素)正在耗盡機器的堆疊空間。

必須在adcirc構建過程以及netcdf庫的構建過程中新增此編譯器標誌。如果netcdf-fortran庫不是使用此標誌構建的,則故障仍然可能發生。這是因為在netcdf庫中建立了乙個隱式陣列,因此我們無法單獨使用adcirc來解決該問題,除非建議netcdf-fortran庫也與該標誌一起重新編譯。

陣列大小可能因機器而異,也可能不會發生,具體取決於所使用的英特爾版本或netcdf的構建方式。(此外,outlook將副檔名更改為.f90,但應為.f90)

大型整數運算 加法, 減法, 乘法

from 用int數模仿真整數的每乙個位,大於10的要進製,負數要借位。include include define max digit 500 大數運算 加法 int multiply int a,int b,int result 大數運算 乘法 int add int a,int b,int r...

Latex 大型運算子上下標

在單行公式中,latex有時會預設將連加連乘等公式的引數放在右側上下標位置,但是想直接放在符號上下位置,如何解決,可使用 limits命令解決,在原符號命令與上下標引數之間插入該命令即可。示例 p bigcup a i sum p a i sum p a i a j sum p a i a j a ...

利用「崩潰軌跡」分析崩潰

原文出自 聽雲技術部落格 崩潰,嚴重傷害使用者的情感,嚴重損害使用者體驗,罪惡行徑簡直令人髮指,特請xx獅 xx猿火速緝拿案犯歸案,刻不容緩,欽此。上圖所示,已經定位到某原始檔的某行,再加上崩潰message,崩潰的原因就顯而易見了。但有些崩潰的原因就不是那麼顯而易見了,往往需要尋找更多蛛絲馬跡來定...