Process 如果MPI进程崩溃怎么办?

Process 如果MPI进程崩溃怎么办?,process,fork,mpi,poco-libraries,fault-tolerance,Process,Fork,Mpi,Poco Libraries,Fault Tolerance,我正在评估容错应用程序的不同多处理库。我基本上需要允许任何进程在不停止整个应用程序的情况下崩溃 我可以使用fork()系统调用来完成。这里的限制是进程只能在同一台机器上创建 我可以用MPI做同样的事情吗?如果使用MPI创建的进程崩溃,父进程能否继续运行并最终创建新进程 是否有其他(可能是多平台和开源)库可以获得相同的结果 如前所述,MPI 4.0将支持容错。如果您想要集合,您必须等待MPI-3。如High Performance Mark和Hristo Illev所建议的那样) 如果您可以接受

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

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

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

是否有其他(可能是多平台和开源)库可以获得相同的结果



如前所述,MPI 4.0将支持容错。

如果您想要集合,您必须等待MPI-3。如High Performance Mark和Hristo Illev所建议的那样)

如果您可以接受点对点,并且您是一个有耐心的人,愿意针对您的MPI实现提出一系列错误报告,那么您可以尝试以下方法:

  • 禁用默认MPI错误处理程序
  • 仔细检查MPI程序中的每个返回代码
  • 在您的应用程序中跟踪哪些排名上升,哪些排名下降。哦,当他们倒下的时候,他们再也回不来了。但你无论如何都不能使用集体(见我的开场白),所以这不是什么大不了的事,对吧
这是一份旧报纸(比尔还在阿贡工作的时候,我想是2003年的):
. 它列出了人们可以在MPI中执行的各种容错操作。也许这样的“受限MPI”仍然可以满足您的需要

如果你想要集体赛,你必须等待MPI-3.something(正如High Performance Mark和Hristo Illev所建议的那样)

如果您可以接受点对点,并且您是一个有耐心的人,愿意针对您的MPI实现提出一系列错误报告,那么您可以尝试以下方法:

  • 禁用默认MPI错误处理程序
  • 仔细检查MPI程序中的每个返回代码
  • 在您的应用程序中跟踪哪些排名上升,哪些排名下降。哦,当他们倒下的时候,他们再也回不来了。但你无论如何都不能使用集体(见我的开场白),所以这不是什么大不了的事,对吧
这是一份旧报纸(比尔还在阿贡工作的时候,我想是2003年的):
. 它列出了人们可以在MPI中执行的各种容错操作。也许这样的“受限MPI”仍然可以满足您的需要

如果你愿意追求研究质量,那么在未来版本的MPI(MPI-4?)中有两个潜在容错章节的实现。该建议称为用户级故障缓解。中有一个实验版本,它的一个分支也提供了接口。这两种产品的质量都很差,但欢迎您试用。只需知道,因为这不在MPI标准中,所以函数前缀不是
MPI.*
。对于MPICH,它们是
MPIX.*
,对于OpenMPI分支,它们是
OMPI.*
(尽管我相信它们很快也会将其更改为
MPIX.*


正如Rob Latham所提到的,虽然你不必检查所有的返回代码,但你需要在应用程序中做大量的工作来处理失败。你可以/应该使用MPI错误处理程序作为回调函数来简化事情。规范中有相关信息/示例,如果你是willin为了提高研究质量,在未来版本的MPI(MPI-4?)中有两个潜在容错章节的实现。该建议称为用户级故障缓解。中有一个实验版本,该版本的一个分支也提供了接口。两者都远低于生产质量,但欢迎您尝试。只需知道,由于这不在MPI标准中,函数前缀不是
MPI.*
。对于MPICH,它们是
MPIX*
,对于OpenMPI分支,他们是
OMPI*
(尽管我相信他们很快也会将他们的分支更改为
MPIX*


正如Rob Latham所提到的,虽然你不必检查所有的返回代码,但你需要在应用程序中做大量的工作来处理故障。你可以/应该使用MPI错误处理程序作为回调函数来简化事情。规范中提供了信息/示例以及。

使用你最喜欢的搜索容错MPI引擎,了解该领域的当前研究状况。目前,据我所知,没有生产级MPI实现可以在进程崩溃时继续运行。大多数MPI实现都会注意到一个进程已死亡,并将终止整个MPI作业。容错不起作用在MPI-3中,许多实现者选择推迟将FT构建到库中(反之亦然)。使用您最喜欢的容错MPI搜索引擎了解该领域的研究现状。目前,据我所知,没有生产级MPI实现可以在进程崩溃时继续运行。大多数MPI实现会注意到一个进程已死亡,并将终止整个MPI作业。fault tolerance没有进入MPI-3,因此许多实现者选择推迟将FT构建到他们的库中(反之亦然)。