8

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

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

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

                                      尼莫海鸥

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

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

4

1 回答 1

4

自从有人问到这个问题已经有一段时间了,但这篇文章可能有你正在寻找的答案。(如果您使用的是 OpenMPI ,则--mca mpi_yield_when_idle 1作为参数传递给博士)mpirun

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

于 2017-06-29T18:57:23.660 回答