MPI EC2上正确的处理器数量

2024-04-29 15:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

mpiexec -n 4 python mytestfile.py

或者

mpiexec -np 8 python mytestfile.py

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


Tags: 实例py数量节点堆栈集群mpi4pyscipy
1条回答
网友
1楼 · 发布于 2024-04-29 15:26:43

mpiexec需要启动MPI进程的节点列表。一般来说,有两种方法可以获得该列表。在

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

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

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

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

给定上述主机文件,可以启动如下MPI作业:

^{pr2}$

在远程节点上启动作业通常要求当前用户能够使用某种无密码机制(例如公钥身份验证)登录到这些节点。在

相关问题 更多 >