2017-04-17 78 views
0

在C中使用OpenMPI;在同一函數中調用MPI_Barrier兩次可以嗎?

說我有

main() 
{ 
MPI_Init(); 

//// Important Program Region 

MPI_Barrier(MPI_COMM_WORLD); 

// do something here 

MPI_Barrier(MPI_COMM_WORLD); 

//// 
MPI_Finalize(); 
} 

這是不好的做法?我能像這樣兩次強制同步強制屏障嗎?這樣做的缺點?

+0

這是相同的代碼行嗎?我看到兩行代碼調用'MPI_Barrier'。爲什麼你認爲你首先需要一個屏障? – Zulan

+0

哎呀,謝謝你指出,現在我的答案? – user26763

回答

1

上述程序應按原樣運行。通過MPI_Barrier強制進行同步不是一次或兩次,而是儘可能多次。這就是說,MPI_Barrier的主要缺點是你的程序的可擴展性會大大減少你多次調用它。

注意:如果你在標題中提到的「同一行」上調用它(但不是問題本身),那麼第二個障礙實際上是一個空操作 - 你已經達到了同步點;第二個障礙究竟是什麼?

+0

對不起,這個「行」是一個錯字,我修好了 – user26763

相關問題