【问题标题】:MPI_Get_count returning negative value for countMPI_Get_count 返回计数的负值
【发布时间】:2012-06-14 21:59:42
【问题描述】:

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

【问题讨论】:

  • 请声明recv_size?
  • recv_size 被声明为整数。
  • MPI_UNDEFINED 在 Open MPI 和 Intel MPI 中都是 -32766

标签: c parallel-processing mpi


【解决方案1】:

如果消息大小不是提供给 MPI_Get_count 的数据类型大小的倍数,则 MPI_Get_count 将返回 MPI_UNDEFINED(很可能是负数)。因此,也许您将 5 字节作为 MPI_BYTE 发送,但您询问 MPI_Get_count 您收到了多少 MPI_DOUBLES。

【讨论】:

  • 这是我对 mpi_send 的声明:MPI_Send(T,(m->ncols),MPI_DOUBLE,map(j,procs),0,MPI_COMM_WORLD);
【解决方案2】:

我刚刚意识到我发送的数据有问题。值超过了 double 的大小。修复它并且代码有效。感谢您的帮助,对于错误的代码,我们深表歉意!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多