我有一个异构计算集群,我希望在使用OpenMPI时运行并行计算任务。由于集群中的所有节点都不能运行相同的可执行文件(由于是异构的),所以我希望某些节点编译自己版本的程序,并让Open在这些节点上调用该可执行文件。我的第一个问题是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 post表示OpenMPI支持异构集群计算,但我必须使用--enable-heterogeneous标志构建OpenMPI。我不知道如何做到这一点,因为我的集群正在运行ArchLinux,我用pacman安装了OpenMPI。
发布于 2017-09-25 06:01:09
注意,有一个错误(--host不需要结束s),所以您的命令应该是
mpirun -n 3 --host node0,node1,node2 prog1 : -n 3 --host node3,node4,node5 prog2--enable-heterogeneous是必需的,因此开放MPI可以在异构系统上运行(例如在Intel x86_64 (小endian)和sparcv9 (大端)节点之间)。如果OpenMPI (随ArchLinux一起来)没有配置此标志,那么您应该重新构建这个包。另一种选择是重新构建Open并将其安装到另一个目录中。
最后但并非最不重要的一点是,异构支持是(非常)容易测试的,我强烈鼓励您使用最新的OpenMPI3.0系列。
https://stackoverflow.com/questions/46394767
复制相似问题