打开MPI虚拟计时器已过期

时间:2014-05-19 09:54:16

标签: linux mpi

我在Gentoo 3.13上使用Open MPI 1.8来管理通过服务器/客户端概念从一个程序到另一个程序的数据传输。服务器和客户端都通过mpiexec作为单独的进程启动。几天后(这是一个非常繁重的计算......),我有时会收到错误

mpiexec noticed that process rank 0 with PID 17213 on node XXX exited on signal 26 (Virtual timer expired).

不幸的是,错误不能以可靠的方式再现,即错误并不总是出现,并且不总是在程序流程中的同一点。我也在其他机器上遇到过这个错误。我已经将问题跟踪到ITIMER_VIRTUAL,该问题在到期时会传递SIGVTALRM(请参阅,例如http://man7.org/linux/man-pages/man2/setitimer.2.html)。在手册页的BUGS部分,它表示

  

在非常繁重的负载下,ITIMER_REAL计时器可能会在之前到期的信号发送之前到期。这种情况下的第二个信号将丢失。

我想知道ITIMER_VIRTUAL是否也有类似的东西?有没有人遇到类似的问题,可以确认错误?

我能想到的唯一解决方法是调用setitimer(...)并尝试自己操作计时器。但是,我希望还有另一种方法,因为我不能总是修改客户端'源代码。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

由于这个问题没有得到正式回答,我将代表Hristo(@HristoIliev:我希望你可以这样做)。正如在我的问题的第一条评论中指出的那样,Open MPI源代码中没有一个提示可能导致虚拟计时器到期。实际上,计时器问题与第三方库有关,这使得代码在不可预测的时间后崩溃(取决于机器的当前负载)。