MPI_Get_count返回count的负值

时间:2012-06-14 21:59:43

标签: c parallel-processing mpi

MPI_Get_count()可以返回计数的负值吗?我的邮件大小永远不会超过1138个整数。所以它不应该是消息长度的问题。

    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的值是负数。

2 个答案:

答案 0 :(得分:1)

如果消息大小不是给予MPI_Get_count的数据类型大小的倍数,则MPI_Get_count将返回MPI_UNDEFINED(最可能为负)。所以也许你正在发送5字节作为MPI_BYTE,但你问MPI_Get_count你收到了多少MPI_DOUBLES。

答案 1 :(得分:0)

我刚才意识到我发送的数据存在问题。值超过sizeof double。修复它并且代码有效。感谢您的帮助,并抱歉有错误的代码!