【问题标题】:MPI Hostfiles with Hyperthreading具有超线程的 MPI 主机文件
【发布时间】:2013-09-03 09:49:21
【问题描述】:

我正在我大学的计算机实验室中跨节点运行一些小型 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® Core™ i7-3770 处理器,它是四核,但也是超线程的。什么是涉及超线程的 Open MPI 主机文件的最佳实践?我应该为每个节点列出四个还是八个插槽?

谢谢。

【问题讨论】:

    标签: cluster-computing mpi openmpi hyperthreading


    【解决方案1】:

    这取决于您的使用情况。您可能想要对大量配置进行一些实验,但通常人们在使用 MPI+OpenMP 时会做什么(我假设您的意思是 OpenMP 线程库。不是 Open MPI,MPI 库,即使您的问题是标记为 OpenMPI。)是每个节点有一个 MPI 进程,每个内核有一个 OpenMP 线程。我不确定超线程在这里的重要性,但这是通常的做法。

    如果您确实在提到 OpenMP 的任何地方都指的是 Open MPI,那么情况就不同了。如果您只使用 MPI 进程,那么通常人们每个内核使用一个 MPI 进程。

    最后,您需要使用一系列设置来测试您的应用程序,看看哪种设置最适合您的机器和应用程序。没有灵丹妙药。

    【讨论】:

    • 当他用openmpi 标签标记问题时,我相信 OP 的意思是 Open MPI。
    【解决方案2】:

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

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

    例如,在 Xeon Phi(Knights Landing 微架构)中,每个内核都有四个超线程线程,而不是两个。因此,如果您在 Xeon Phi 上使用--use-hwthread-cpus 运行 Open MPI,它将为每个内核分配四个 Open MPI 处理器。

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

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2011-10-03
      • 2020-05-25
      • 1970-01-01
      • 2019-05-29
      相关资源
      最近更新 更多