2017-09-24 93 views
0

我有一个异构计算群集,我想在使用OpenMPI时运行并行计算任务。由于不是群集中的所有节点都可以运行相同的可执行文件(由于存在异构性),我希望某些节点可以编译它们自己的程序版本,并使Open MPI在这些节点上调用该可执行文件。我的第一个问题是OpenMPI是否支持跨异构体系结构的这种计算。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。我不知道如何做到这一点,因为我的集群正在运行ArchLinux,并且我使用pacman安装了OpenMPI。

回答

1

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

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

--enable-heterogeneous需要如此开放MPI可以在Intel x86_64的之间的异构系统(例如跑出(小端)和sparcv9(大端)节点)。如果OpenMPI(与ArchLinux一起提供)未配置此标志,则应重新构建此包。另一种选择是重建Open MPI并将其安装到备用目录中。

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

+0

太好了。因此,一旦我使用该标志构建OpenMPI,我可以继续编译我的单独可执行文件并使用该命令执行它们? –

+0

我想是的,你打算运行什么样的体系结构? –

+0

集群中的一些节点有x86芯片组,有些是ARM(肯定是一个穷人的集群,更像是一个教育项目) –