我在MPI編程上有點新手(mpich2 fedora)。 我正在寫因爲,當MPI_Barrier與另一個與MPI_COMM_WORLD不同的通信器時,我得到了死鎖。如何將MPI_Brier與另一個通信器一起使用?
我使2個傳播者這樣的:
MPI_Comm_split(MPI_COMM_WORLD,顏色,等級,& split_comm);
如果我把一個MPI_Barrier所有的顏色都可以通過,它會沒事的。
但是,如果我把MPI_Barrier只有顏色== 1可以通過,我有死鎖。
如何將MPI_Brier與另一個通信器一起使用? 我也在使用MPI_Bcast()(與另一個不同的通信器MPI_COMM_WORLD),但是當沒有人調用MPI_Bcast時,它也沒有被阻塞。一個與MPI_COMM_WORLD不同的通信器可以同步你自己的進程嗎?
有關'MPI_Bcast'具有隱式屏障的聲明根本不是真的。該標準允許任何進程在其操作完成後立即退出集體調用,從而實現優化實施。唯一的例外是'MPI_Barrier',它總是**全局同步。 –
感謝您對隱含屏障的澄清。你完全正確。我編輯了我的評論以消除這一點。 –