如果MPI进程崩溃会发生什么?

问题描述 投票:1回答:2

我正在为容错应用程序评估不同的多处理库。我基本上需要允许任何进程崩溃而不停止整个应用程序。

我可以使用fork()系统调用来完成它。这里的限制是只能在同一台机器上创建进程。

我可以用MPI做同样的事吗?如果使用MPI创建的进程崩溃,父进程是否可以继续运行并最终创建新进程?

是否有任何替代(可能是多平台和开源)库来获得相同的结果?


here报道,MPI 4.0将支持容错。

process fork mpi poco-libraries fault-tolerance
2个回答
2
投票

如果你想要集体,你将不得不等待MPI-3.something(如高性能马克和Hristo Illev建议)

如果你能够点对点,并且你是一个耐心的人,愿意针对你的MPI实现提出一堆bug报告,你可以尝试以下方法:

  • 禁用默认MPI错误处理程序
  • 仔细检查MPI程序中的每一个返回代码
  • 在你的应用程序中跟踪哪些排名上升,哪些排名下降。哦,当他们下来时,他们永远无法回来。但无论如何你都无法使用集体(参见我的开场白),所以这不是一件大事,对吧?

这是一篇旧报纸(当比尔还在Argonne工作时回来。我认为这是从2003年开始的):http://www.mcs.anl.gov/~lusk/papers/fault-tolerance.pdf。它列出了在MPI中可以做的容错事情。也许这种“受限制的MPI”可能仍然适合您的需求。


2
投票

如果您愿意为研究质量而努力,那么对于未来版本的MPI(MPI-4?),有两种潜在的容错章节实现。该提议称为用户级故障缓解。在MPICH 3.2a2有一个实验版本,Open MPI的分支也提供接口。两者都远没有生产质量,但欢迎您试用它们。只知道因为这不在MPI标准中,所以函数前缀不是MPI_*。对于MPICH,他们是MPIX_*,对于Open MPI分支,他们是OMPI_*(虽然我相信他们将很快改变他们的MPIX_*

正如Rob Latham所提到的,在你的应用程序中你需要做很多工作来处理失败,尽管你不一定要检查所有的返回代码。您可以/应该使用MPI错误处理程序作为回调函数来简化操作。规格中的信息/示例与Open MPI branch一起提供。

© www.soinside.com 2019 - 2024. All rights reserved.