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

时间:2017-09-24 20:55:20

标签: mpi distributed-computing openmpi

我有一个异构计算集群,我想在使用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帖子表明OpenMPI支持异构集群计算,但我必须使用--enable-heterogeneous标志构建OpenMPI。我不确定如何执行此操作,因为我的群集正在运行ArchLinux并且我使用pacman安装了OpenMPI。

1 个答案:

答案 0 :(得分:1)

注意有一个拼写错误(--host不需要结尾s),所以你的命令应该是

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

--enable-heterogeneous是必需的,因此Open MPI可以在异构系统上运行(例如在Intel x86_64(little endian)和sparcv9(big endian)节点之间)。如果未使用此标志配置OpenMPI(随ArchLinux一起提供),则应重建此程序包。另一种选择是重建Open MPI并将其安装到备用目录中。

最后但并非最不重要的是,异构支持(非常)轻微测试,我强烈建议您使用最新的Open MPI 3.0系列。