【问题标题】:Prevent MPI from busy looping防止 MPI 忙循环
【发布时间】:2016-09-01 21:40:48
【问题描述】:

我有一个 MPI 程序过度订阅/过度使用其处理器。也就是说:进程比处理器多得多。

不过,这些进程中只有少数进程在给定时间处于活动状态,因此不应争用计算资源。

但是,就像海底总动员中的海鸥群,当这些进程等待通信时,它们都在忙循环,问“我的?我的?我的?”

                                     

我同时使用 Intel MPI 和 OpenMPI(用于不同的机器)。我怎样才能说服他们不要忙循环?

我的快速而肮脏的解决方案是在循环中使用 MPI_Iprobe 和 sleep 命令(请参阅 here)。

【问题讨论】:

  • 您是否在单个主机上运行所有进程?
  • 不,它们可能分布在多个主机上。
  • 主机用什么样的网络连接?
  • 我实际上在单个主机上遇到了这个问题,只是没有机会对此进行自己的研究。因此,如果有一个普遍的答案,我会非常感兴趣,而不仅仅是针对特定的 BTL。
  • @Zulan,我不相信有一个通用的开关。根据下面的硬件,每个 BTL 都有自己的同步和通知需求和偏好。

标签: c++ mpi openmpi busy-waiting intel-mpi


【解决方案1】:

这个问题已经有一段时间了,但是这个post 可能有你正在寻找的答案。 (如果您使用的是 OpenMPI,则将 --mca mpi_yield_when_idle 1 作为参数传递给 mpirun

除此之外,如果您的 MPI 进程在 MPI 障碍处等待,您可以设置 I_MPI_WAIT_MODE=1 以防止 INTEL 的 MPI 中的繁忙循环。对于 OpenMPI,请参阅链接的帖子。

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2016-11-05
    • 2011-12-08
    • 2012-05-08
    相关资源
    最近更新 更多