我有一个异构计算集群,我想在使用OpenMPI时运行并行计算任务。由于并非集群中的所有节点都可以运行相同的可执行文件(由于是异构的),我希望某些节点能够编译自己的程序版本,并让Open MPI在这些节点上调用该可执行文件。我的第一个问题是OpenMPI是否能够在异构架构中实现这种计算。
如果是这样,我的第二个问题是如何指定在哪些节点上运行哪些可执行文件。例如,假设node0
,node1
和node2
可以运行可执行文件prog1
和node3
,node4
和node5
可以运行可执行文件prog2
,其中prog1
和prog2
是相同的程序,但使用mpicc
或mpic++
包装器编译器为不同的体系结构编译。
如果我想在所有节点上并行运行此程序,我会执行以下操作:
mpirun -n 3 --hosts node0,node1,node2 prog1 : -n 3 --hosts node3,node4,node5 prog2
如果没有,我会怎样做才能达到这个效果? This帖子表明OpenMPI支持异构集群计算,但我必须使用--enable-heterogeneous
标志构建OpenMPI。我不确定如何执行此操作,因为我的群集正在运行ArchLinux并且我使用pacman
安装了OpenMPI。
答案 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系列。