2013-10-08 77 views
1

我最近開始在MPI(C語言)編程,我遇到了一種情況,在我創建的所有n進程中,我需要一個進程來顯式等待另一個過程。 我已經通過了MPI_Barrier和MPI_Wait,但仍不確定它是如何工作的。提前致謝。如何使一個進程等待另一個進程

+0

你能描述你爲什麼認爲需要等待嗎?你很可能不需要那樣做。 – Adam

+0

是的,我有一個矩陣,我正在爲它的每個反對角線創建一個過程。在n * n矩陣中,我將有2n-1反對角線(這是進程的數量)。情況是,一個進程必須等待前一個進程執行,因爲它需要來自該進程的數據。所以在這種情況下,我不得不引入一個等待,以確保我不以舊值操作。 –

+0

一個'n * n'矩陣有'n'個反對角元素。 – Adam

回答

2

如果您明確期望您希望等待的進程中的數據,只需撥打MPI_Recv並將源進程命名爲sender參數,並且接收呼叫將阻塞,直到數據發送給它。

正如@Adam對您的問題所做的深入評論所指出的,您所描述的內容可能是完全順序的算法,這在MPI程序中會是一個相當不幸的結果。

+1

@Ajinkya「阻塞到」意味着「等待」。 – Adam

+0

是的,我會嘗試使用MPI_Recv。對於我的情況來說,它似乎比MPI_WAIT更好。謝謝 –

相關問題