【问题标题】:MPI correct number of processors on EC2MPI 正确的 EC2 上的处理器数量
【发布时间】:2023-03-25 10:53:02
【问题描述】:

我使用 starcluster 在 ec2 上设置了一个集群,并设置了 scipy 堆栈(包括 mpi4py)。我被告知要发布一个 mpi 作业,其处理器数量与集群中的处理器数量相匹配。例如,如果我创建一个实例类型的 4 节点集群,其中每个集群有 2 个 vcpu,我是否会发出:

mpiexec -n 4 python mytestfile.py

mpiexec -np 8 python mytestfile.py

另外,我如何确定每个节点实际上处理 2 个问题实例,而不是一个节点处理所有 8 个?换句话说,mpiexec 会自动解决所有这些问题吗?

【问题讨论】:

    标签: python amazon-ec2 mpi mpiexec


    【解决方案1】:

    mpiexec 需要启动 MPI 进程的节点列表。一般来说,它可以通过两种方式获取列表。

    第一种方法是通过与某种分布式资源管理器集成,例如SGE、Torque、LSF 等。它们通常为每个作业提供授予节点的列表,然后 MPI 启动器可以解析该列表并提取必要的信息。在这种情况下,通常只需运行 mpiexec -n #procs ./executable 就足够了。

    第二种方法是手动提供列表。这通常通过命令行选项(如 Open MPI 中的 -H)或所谓的主机文件来完成。主机文件通常会列出作业应执行的节点的主机名以及每个节点上的插槽数。 Open MPI 的示例主机文件是:

    node0001 slots=2
    node0002 slots=2
    node0003 slots=2
    node0004 slots=2
    

    slots=2 在这种情况下告诉库每个节点提供两个插槽,这意味着最多可以在该节点上启动两个 MPI 进程。插槽数是一个任意值,不需要与 CPU/内核数匹配,但在大多数情况下,插槽数将与内核数匹配(尽管对于混合 MPI+线程作业可能并非如此)。

    鉴于上述主机文件,可以像这样启动 MPI 作业:

    mpiexec --hostfile /path/to/hostfile -n 8 ...
    

    在远程节点上启动作业通常需要当前用户能够使用一些无密码机制登录到这些节点,例如公钥认证。

    【讨论】:

    • 如果我使用starcluster 工具,它不会在后台自动设置主机文件吗?
    猜你喜欢
    • 2021-08-23
    • 2023-03-03
    • 2012-04-16
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2018-01-29
    相关资源
    最近更新 更多