【问题标题】:MPI_ANY_SOURCE in non blocking receive (MPI_Irecv)非阻塞接收中的 MPI_ANY_SOURCE (MPI_Irecv)
【发布时间】:2022-12-03 13:42:39
【问题描述】:

我使用 LD_PRELOAD 用我自己的函数覆盖 MPI_Irecv 函数来对 MPI_Irecv 函数进行一些调试。

在这里,我的包装函数“myMPI_Irecv.c”代码:

int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source,
                    int tag, MPI_Comm comm, MPI_Request * request)
    {
         int rang_Irecv;
         MPI_Comm_rank(comm, &rang_Irecv);

         printf(" Calling MPI_Irecv, je suis processeur=%d, source=%d, buffer=%p\n", rang_Irecv,source,buf);
    
         return PMPI_Irecv(buf, count, datatype, source, tag, comm, request);
    }

运行我的 MPI 应用程序后(我正在使用 MPICH): 我发现有一些MPI_ANY_SOURCE的调用,因为我打印source的时候发现SOURCE=-2。

我的问题是,如何知道非阻塞接收 MPI_Irecv 的源(发送方)?

先感谢您。

此致,

【问题讨论】:

    标签: mpi


    【解决方案1】:

    我怀疑(您没有包含足够的代码)您正在阅读接听电话的来源。相反,您必须查看该接收的 MPI_Wait 调用。它输出一个状态对象,您可以调查 mystats.MPI_SOURCE 以查看消息的实际来源。

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 2012-08-24
      • 2017-08-31
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多