如果主机文件中的一个节点出现故障,如何使用 MPI 处理其余节点
2 回答
MPI 3 标准包括“容错”提案草案。该提案未获通过,但工作组继续取得进展。期望该提案将被采用到该标准的某些未来版本中。
我不知道有任何开源 MPI 实现为提案草案提供支持。我知道一个商业 MPI 确实完全实施了关于容错的提案草案(作为免责声明……MPI 恰好是我工作的那个)。
即使有了提案草案,“节点级”故障仍然很难恢复。当前针对节点级故障的“食谱”方法是使用检查点/重新启动和作业调度程序来自动重新启动作业。如果一个节点发生故障,该作业将自动重新安排在与上一个成功检查点不同的节点集上运行。
这种食谱方法需要强大的检查点/重启基础设施、容错共享文件系统,以及应用程序和 MPI 实现在检查点/重启过程中的积极参与。此外,并非每个 MPI 和应用程序都能够在不同的节点集上重新启动......因此这种方法可能需要在重新启动作业之前恢复故障节点。
正如之前的发帖者所说,没有任何“标准”的方式来处理这个问题,但是来自 MPI 论坛的容错工作组的草案已经变得相当成熟。如果您想尝试一下,目前有一个基于 Open MPI 分支的参考实现可用。很快就会有其他实现包括草案,但目前,您唯一的开源选项可在http://www.fault-tolerance.org获得。您可以在那里下载实现以及标准草案的版本和一些示例以开始使用。如果您有问题,那里也有一个邮件列表。