3
截斷我有鄰接矩陣和下面的代碼:消息在MPI_RECV
if (is_broadcast_message) {
MPI_Send(&broadcast_message,1,MPI_INT,j,3,MPI_COMM_WORLD);
MPI_Send(&message,20,MPI_CHAR,j,3,MPI_COMM_WORLD);
}
凡broadcast_message=128
(隨機數,當我收到只知道,這是一個廣播消息)
留言被定義爲char [20]。
else if (i have to send only to a node) {
MPI_Send(&destination,1,MPI_INT,next_hop[destination],3,MPI_COMM_WORLD);
MPI_Send(&message,20, MPI_CHAR, next_hop[destination],3,MPI_COMM_WORLD);
}
當我接收我首先檢查是否recv_payload
是128
(廣播值)或其他值:
MPI_Recv(&recv_material,1,MPI_INT,MPI_ANY_SOURCE,3,MPI_COMM_WORLD,&status2);
如果它是128,則:
MPI_Recv(&message,20,MPI_CHAR,from_d,3,MPI_COMM_WORLD,&status2);
和我將郵件轉發給所有進程
MPI_Send(&message,20,MPI_CHAR,j,3,MPI_COMM_WORLD);
如果不是128,我檢查,如果我的目的地:
if(recv_material == rank)
MPI_Recv(&mesaj,20,MPI_CHAR,from_d,3,MPI_COMM_WORLD,&status2);
否則,我送的下一跳[recv_material]
MPI_Send(&mesaj,20,MPI_CHAR,next_hop[recv_material],3,MPI_COMM_WORLD);
的問題是,我得到的下面的錯誤,我不知道爲什麼:
Fatal error in MPI_Recv: Message truncated, error stack:
MPI_Recv(186).....................: MPI_Recv(buf=0x7fffbce8f2a4, count=1, MPI_INT
src=MPI_ANY_SOURCE, tag=3, MPI_COMM_WORLD, status=0x7fffbce8f250) failed
MPIDI_CH3U_Receive_data_found(129): Message from rank 7 and tag 3 truncated;
20 bytes received but buffer size is 4
我真的不能發佈我的實際代碼,因爲這是一個家庭作業。 – Matei
對不起。沒有更多的信息,這將很難解決這個問題。 –