防止MPI忙于循环

时间:2016-05-06 18:03:49

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

我有一个MPI程序,它过度订阅/过度使用其处理器。那就是:进程多于处理器。

但是,在给定时间内,只有少数这些进程处于活动状态,因此不应存在对计算资源的争用。

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

Nemo Seagulls

我正在使用英特尔MPI和OpenMPI(适用于不同的机器)。我怎样才能说服他们两者不要忙于循环?

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

1 个答案:

答案 0 :(得分:3)

已经有一段时间了,但是这个post可能有你想要的答案。 (如果你使用的是OpenMPI,则tl; dr将--mca mpi_yield_when_idle 1作为参数传递给mpirun

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