Cluster computing 具有超线程的MPI主机文件

Cluster computing 具有超线程的MPI主机文件,cluster-computing,mpi,openmpi,hyperthreading,Cluster Computing,Mpi,Openmpi,Hyperthreading,我在我大学的一个计算机实验室中运行一些跨节点的小型MPI作业。没有安装排队系统,因此每次运行作业时,我必须自己生成MPI主机文件,然后像这样运行它们: mpirun --hostfile mpi_hostfile -n 32 ./mpi_program 我使用Open MPI,因此现在我的主机文件如下所示: localhost slots=4 hydra13 slots=4 hydra14 slots=4 hydra2 slots=4 hydra22 slots=4 hydra24 slots

我在我大学的一个计算机实验室中运行一些跨节点的小型MPI作业。没有安装排队系统,因此每次运行作业时,我必须自己生成MPI主机文件,然后像这样运行它们:

mpirun --hostfile mpi_hostfile -n 32 ./mpi_program
我使用Open MPI,因此现在我的主机文件如下所示:

localhost slots=4
hydra13 slots=4
hydra14 slots=4
hydra2 slots=4
hydra22 slots=4
hydra24 slots=4
hydra26 slots=4
hydra1 slots=4
我的问题是:每个节点都有一个Intel®内核™ i7-3770处理器,它是四核的,但也是超线程的。在涉及超线程的情况下,开放MPI主机文件的最佳实践是什么?我应该为每个节点列出四个或八个插槽吗


谢谢。

这取决于您的使用情况。您可能想对许多配置进行一些实验,但通常情况下,如果使用MPI+OpenMP(我假设您指的是OpenMP线程库。不是Open MPI,MPI库,即使您的问题标记为OpenMPI),人们会做的是每个节点有一个MPI进程,每个核心有一个OpenMP线程。我不确定超热疗在这里有多重要,但这是通常的做法

如果你说的OpenMPI是指OpenMP,那就不一样了。如果您只使用MPI进程,那么通常每个核心使用一个MPI进程

最后,您需要通过一系列设置测试您的应用程序,看看哪一个最适合您的机器和应用程序。没有银弹。

您可以为
mpirun
运行
-use-hwthread-cpu
命令行参数

在这种情况下,开放MPI会认为处理器是由超线程提供的线程。否则,它将处理器视为CPU核心,这是默认行为

例如,在Xeon Phi(骑士登陆微体系结构)中,每个核心有四个超线程,而不是两个。因此,如果您在Xeon Phi上使用
--使用hwthread CPU
运行OpenMPI,它将为每个核心分配四个OpenMPI处理器


使用此选项时,Open MPI将超线程提供的线程称为“硬件线程”。使用此技术,您将不会过度订阅,如果某些开放MPI处理器将在虚拟机上运行,它将使用分配给该虚拟机的正确线程数。

我相信OP在用
openmpi
标记问题时是指开放MPI。