OpenMPI 为特定节点指定可执行文件

OpenMPI specify executable for specific nodes

我有一个异构计算集群,我想 运行 使用 OpenMPI 并行计算任务。由于并非集群中的所有节点都可以 运行 相同的可执行文件(由于是异构的)我希望一些节点编译他们自己的程序版本并让 Open MPI 在这些节点上调用该可执行文件。我的第一个问题是 OpenMPI 是否支持这种跨异构架构的计算。

如果是这样,我的第二个问题是如何在哪些节点上指定哪些可执行文件运行。例如,假设 node0node1node2 可以 运行 执行 prog1node3node4node5 可以 运行 执行 prog2,其中 prog1prog2 是同一个程序,但使用 mpiccmpic++ 针对不同的体系结构编译包装器编译器。

如果我想 运行 这个程序在所有节点上并行执行,我会执行以下操作:

mpirun -n 3 --hosts node0,node1,node2 prog1 : -n 3 --hosts node3,node4,node5 prog2

如果没有,我该怎么做才能达到这种效果? This post 表示 OpenMPI 支持异构集群计算,但我必须使用 --enable-heterogeneous 标志构建 OpenMPI。我不确定如何执行此操作,因为我的集群是 运行ning ArchLinux 并且我使用 pacman.

安装了 OpenMPI

注意有错别字(--host不需要结尾s),所以你的命令应该是

mpirun -n 3 --host node0,node1,node2 prog1 : -n 3 --host node3,node4,node5 prog2

--enable-heterogeneous 是必需的,因此 Open MPI 在异构系统上可以是 运行(例如在 Intel x86_64(小端)和 sparcv9(大端)节点之间)。如果 OpenMPI(与 ArchLinux 一起提供)没有配置这个标志,那么你应该重建这个包。另一种选择是重建 Open MPI 并将其安装到备用目录中。

最后但同样重要的是,异构支持经过(非常)简单的测试,我强烈建议您使用最新的 Open MPI 3.0 系列。