MPI - 在程序运行时添加/删除节点

时间:2014-11-12 03:01:29

标签: mpi

是否有MPI实现允许在运行时动态添加/删除节点?从节点的完全硬件故障中恢复,允许在不重新启动程序的情况下修复和重新启动节点吗?

1 个答案:

答案 0 :(得分:1)

是否有允许在运行时动态添加/删除节点的MPI实现?

这实际上是两个问题。通常可以使用MPI_Comm_spawn之类的调用在运行时动态添加节点。正如@Hristo在评论中指出的那样,您应该在Open MPI中设置正确的信息密钥。在其他实现中也可以。至于删除节点,目前这是一个很大的研究领域。大多数MPI实现目前在整个节点故障中存在不同程度的成功。在Open MPI的当前版本中,我不认为对这种失败有任何支持[引证需要],尽管有一些工作需要改进。在当前版本的MPICH中,您可以将标记-disable-auto-cleanup传递给mpiexec,并且在进程/节点发生故障后它不会自动清理您的应用程序。但是,您仍然需要修改MPI应用程序来处理这种情况。 MPICH(Intel MPI,Cray MPI,IBM MPI,MVAPICH等)的各种衍生产品都不支持此功能AFAIK。还有其他研究实施可用于扩展MPI标准的支持。标准化机构目前正在考虑将User Level Failure Mitigation视为让用户处理进程失败的一种方式。有一个基于Open MPI的研究实现可以在网站上找到,一个实验原型也将在下一版本的MPICH(3.2)中。

是否从节点的完全硬件故障中恢复,允许在不重新启动程序的情况下修复和重新启动节点?

这基本上与上述过程相同。您需要使用API​​来删除进程,然后以某种方式找出它可用并使用spawn将其添加回来。这些调用必须从应用程序内部进行,而不是从外部进行。