MPI_Recv函式
執行接收作業,而且在收到相符的訊息之前不會傳回。
語法
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
參數
buf [in, optional]
緩衝區的指標,其中包含要傳送的資料。計數
緩衝區中的項目數。 如果訊息的資料部分是空的,請將 count 參數設定為 0。datatype
緩衝區陣列中專案的資料類型。source
指定通訊器內傳送程式的排名。 指定 MPI_ANY_SOURCE 常數,以指定任何來源都是可接受的。標記
用來區分不同類型的訊息的訊息標記。 指定 MPI_ANY_TAG 常數,指出任何標籤都是可接受的。通訊
通訊器的控制碼。狀態 [out]
傳回時,包含儲存所接收訊息相關資訊 之MPI_Status 結構的指標。
傳回值
傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。
在 Fortran 中,傳回值會儲存在 IERROR 參數中。
Fortran
MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
備註
接收訊息的長度必須小於或等於接收緩衝區的長度。 如果所有傳入的資料都不符合接收緩衝區,此函式會傳回溢位錯誤。
如果收到的訊息比緩衝區短,則只會修改對應至訊息的緩衝區部分。 緩衝區的其餘部分不會修改。
進程可以傳送訊息給自己。 不過,透過封鎖傳送和接收作業, MPI_Send 和 MPI_Recv,不安全,因為這些封鎖傳送和接收作業可能會導致死結。
注意
傳送和接收作業之間有不對稱。 接收作業可以接受來自任意傳送者的訊息,但傳送作業必須指定唯一的接收者。 這會實作通訊的推送樣式,其中資料傳輸會受到傳送者影響,而不是由接收者影響資料傳輸的提取樣式。
規格需求
產品 |
HPC Pack 2012 MS-MPI 可轉散發套件、HPC Pack 2008 R2 MS-MPI 可轉散發套件、HPC Pack 2008 MS-MPI 可轉散發套件或 HPC Pack 2008 用戶端公用程式 |
標頭 |
Mpi.h;Mpif.h |
媒體櫃 |
Msmpi.lib |
DLL |
Msmpi.dll |