目前還沒找到具體原因,只能先記錄一下。(問題原因找到了)
分別用ubuntu14.04和ubuntu16.04測試,用的是筆記本,筆記本為雙核四線程,用2線程並行計算;發現ubuntu16.04會在0.28057s時刻出現死鎖,而ubuntu14.04在0.28057s時刻則會出現掉線程的問題:
上面是ubuntu16.04
上面是ubuntu14.04
但是,ubuntu16.04如果繼續計算,會在后面依然出現死鎖的情況,而ubuntu14.04繼續計算以后則不會出現問題。
對於新安裝的win10系統,ubuntu只有16.04版本,無法再安裝14.04,經過嘗試,發現可以選擇debian作為替代,商店里搜索WSL就能看到,看起來debian似乎更加穩定一些。所有編譯工具也推薦都用命令安裝的版本,並且由於debian默認python和ssh是不安裝的,記得手動安裝,下面這些安裝命令依次執行即可:
sudo apt install gcc gfortran make g++ sudo apt install libopenmpi-dev openmpi-bin # For DMP sudo apt-get install python #debian和ubuntu有時候默認不安裝 sudo apt-get install ssh #debian默認不安裝
---------------------------------------------------------------------------------------------------
2018.4.16
今天增大反應速率計算又出現掉線程的問題,於是在追蹤問題的過程中發現一些技巧。
為了在一次掉線程以后快速復現問題,可以把dat里的RES_DT設置小一些,比如0.001。因為*.RES文件是用來給restart的時候用的,如果保存太大,restart的時候可能得從很久之前開始算。
通過反復restart,發現每次都在0.28s左右出現掉線程的問題,而且並沒有不收斂相關錯誤。但是還是下意識把步長從0.0001改為0.00005,發現居然度過了那一段出問題的區間。問題解決!!
The devil is in the detail.