錯誤收集:備忘MPI Application rank 0 exited before MPI_Finalize() 
這種問題是fluent多執行緒問題,一旦出現這種問題整個fluent就死掉了,所有的資料都無法儲存,問題很嚴重。
但是問題一般情況不是多執行緒本身的問題,而是因為執行緒裡面執行的計算過程出現了問題。
1、MPI_Finalize() with status 2 原因之一:出現負體積
只要出現負體積,執行緒的計算就無法進行下去了,這時候執行緒要丟擲異常終止
Error at Node 3: Update-Dynamic-Mesh failed. Negative cell volume detected.
WARNING: 2 cells with non-positive volume detected.MPI Application rank 0 exited before MPI_Finalize() with status 2
2、MPI_Finalize() with status 2 原因之二:任何原因出現發散或速度或移動推進速度過快的情況,如Courant數超大
112 more time steps
Updating solution at time level N...
Global Courant Number [Explicit VOF Criteria] : 471.06
Error at Node 0: Global courant number is greater than 250.00 The
velocity field is probably diverging. Please check the solution
and reduce the time-step if necessary.
Error at Node 1: Global courant number is greater than 250.00 The
velocity field is probably diverging. Please check the solution
and reduce the time-step if necessary.
Error at Node 2: Global courant number is greater than 250.00 The
velocity field is probably diverging. Please check the solution
and reduce the time-step if necessary.
Error at Node 3: Global courant number is greater than 250.00 The
velocity field is probably diverging. Please check the solution
and reduce the time-step if necessary.
MPI Application rank 0 exited before MPI_Finalize() with status 2
===============Message from the Cortex Process================================
Fatal error in one of the compute processes.
==============================================================================
Error: Cortex received a fatal signal (unrecognized signal).
Error Object: ()
Error: There is no active application.
Error Object: (case-modified?)
Error: No journal response to dialog box message:'There is no active application.'
. Internally, cancelled the dialog.
Error: There is no active application.
Error Object: (rp-var-value 'physical-time-step)
Error: There is no active application.
Error Object: (rp-var-value 'delta-time-sampled)
3、MPI_Finalize() with status 2 原因之三:記憶體過度緊張,多執行緒中只要任何一個執行緒無法分配到足夠的記憶體,就會終止
>>問題關鍵:一般情況下,MPI_Finalize() with status 出現之前會有錯誤資訊,如上面e文所示,但是有些情況是沒有的
如下圖所示:
上面的計算是在進行一次正常的動網格重構完成後,進入下一次迭代求解計算的時候,直接出現了問題。
筆者檢查機器此時記憶體佔用已經達到92%的水平,為了進一步驗證這個猜測,本人馬上用一個可以正常計算的case,在記憶體90%以上的情況下進行計算
開始可以計算一步,第二部就直接MPI_Finalize() with status 2
fluent多執行緒mpi異常退出問題,還有多種不同的status,如-1最多,其實只有兩種型別的錯誤,一種是指令碼錯誤,一種是物理模型資料錯誤
前者如 journal file 指令碼 udf指令碼,這些錯誤一般會導致-1或其他-值,後者就是發散、超指標等導致異常物理指標的情況終止。
情況很多,各位要具體問題具體分析,先看出現問題之前的log,如果有log這就是問題根源,如果沒有log提示,很可能就是記憶體問題
還有一種情況是在多執行緒計算中其實內部不同執行緒一直在持續通訊,如果計算過程網路環境變化,直接就回出問題,下圖是計算過程通訊圖,如果網路改變了,比如ip或網絡卡屬性變化,在計算期間是不允許的。