2012-06-14 65 views
0

MPI_Get_count()返回計數的負值嗎?我的消息大小永遠不會超過1138個整數。所以它不應該是消息長度的問題。MPI_Get_count返回計數的負值

if(MPI_Probe(MPI_ANY_SOURCE,0,MPI_COMM_WORLD,&status) == MPI_SUCCESS) 
    { 
    printf("probe flag true\n"); 
    MPI_Get_count(&status,MPI_DOUBLE,&recv_size); 
    } 

我得到的recv_size的值是負值。

+0

請注意recv_size的聲明? –

+0

recv_size被聲明爲一個整數。 – ap040

+0

在MPI和Intel MPI中'MPI_UNDEFINED'都是'-32766'。 –

回答

1

如果消息大小不是給予MPI_Get_count的數據類型大小的倍數,MPI_Get_count將返回MPI_UNDEFINED(最可能爲負數)。所以也許你發送5個字節爲MPI_BYTE,但你問MPI_Get_count你收到了多少個MPI_DOUBLES。

+0

這是我對mpi_send的聲明:MPI_Send(T,(m-> ncols),MPI_DOUBLE,map(j,procs),0,MPI_COMM_WORLD); – ap040

0

我剛剛意識到這是我發送的數據有問題。這些值超過了double的大小。修復了它,代碼工作。感謝您的幫助,併爲錯誤的代碼感到抱歉!