2014-02-28 50 views
0

我在寫一個mpi的C++包裝器。MPI_Send錯誤

我會見了MPI一個奇怪的錯誤:在我的情況下,錯誤只出現在消息足夠大,在運行時錯誤如下:

Fatal error in MPI_Send: Other MPI error, error stack: 
MPI_Send(173)...........................: MPI_Send(buf=0x7fffbd3db7f8, count=1,  MPI_DOUBLE, dest=1, tag=2014, comm=0x84000004) failed 
PIDI_CH3I_Progress(461)................: 
MPID_nem_handle_pkt(636)................: 
MPIDI_CH3_PktHandler_EagerShortSend(308): Failed to allocate memory for an unexpected message. 261895 unexpected messages queued. 

我只用MPI_SEND(不帶請求MPI_Isend )以及這個錯誤怎麼會發生(死鎖會觸發這個)?

+0

您正在使用哪種MPI實現? – zimbra314

+0

@ zimbra314 MPICH2 – xunzhang

回答

2

問題似乎是,您沒有發佈匹配電話MPI_Recv。當它說你在意外的消息隊列中有200000條消息時,這意味着你已經發送了200000條消息而沒有告訴接收過程到達時把它們放到哪裏。

無論您的郵件大小如何,最終都會發生這種情況。如果你的消息更大(由於內存不足),它會更快發生。