2012-02-28 98 views
0

我使用C語言的MPI庫,我想知道是否有可能通過不同的進程從代碼的不同部分調用MPI集體通信方法?MPI集體通信

僞示例:

MPI_Rank(&rank,MPI_COMM_WORLD); 

switch(rank) { 
case 0: 
    MPI_Bcast(buf1,count, type, 0, comm); 
    break; 
case 1: 
    MPI_Bcast(buf1,count, type, 0, comm); 
    break; 
case 2: 
    MPI_Bcast(buf1,count, type, 0, comm); 
    break; 
} 

,或者必須從對每一個工藝同一行的代碼調用?

 MPI_Bcast(buf1,count, type, 0, comm); 

對不起,這個小問題,但我GOOGLE了它,並沒有找到答案。

謝謝!

回答

3

它可以從代碼的不同部分調用,但您必須確保通信器中的所有進程實際調用MPI_Bcast以避免死鎖。如果所有進程遵循不同的執行路徑,這可能稍微難以確保。

+0

謝謝@Francesco,關於我編輯的主題。 – 2012-02-28 12:21:01

+1

@SergeyKucher我也是! – Francesco 2012-02-28 12:24:06