代码之家  ›  专栏  ›  技术社区  ›  Dimitri

MPI中有超时机制吗?

  •  5
  • Dimitri  · 技术社区  · 15 年前

    一切都是标题。 我和我的团队目前正在进行一个项目,我们正在使用MPI。在一个地方,我们正在对超时的资源执行MPI_send resquesting。如果资源可用,则返回1;如果不可用,则超时结束,则返回0。 我们尝试使用SIGALRM这样的信号,但它不起作用,因为每个新的请求都通过设置新的警报来取消旧的请求。

    谢谢你的回答!!

    2 回复  |  直到 15 年前
        1
  •  7
  •   Edric    15 年前

    您应该研究非阻塞点对点通信原语,如 MPI_Isend , MPI_Irecv MPI_Iprobe . 然后您可以自己实现超时,并使用 MPI_Cancel 如果你愿意的话。

        2
  •  2
  •   Stan Graves    15 年前

    没有标准的方法来实现这一点。

    使用非阻塞调用(例如MPI Isend、MPI Irecv)实现send/recv对并使用MPI Test和MPI Cancel是一种可能的解决方案。

    根据资源性质的性质以及程序中需要此功能的次数,还可以考虑将MPI ISend实现为“持久请求”对象。这里有更多信息: Persistent Communications .

    持久化请求的优点是可以形成请求,然后只有当资源实际可用时才执行……假设可以独立于实际的MPI调用检查资源。持久通信请求可以在整个程序中重复使用多次,而无需修改整个MPI-Send/MPI-Recv调用。

    推荐文章