You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在双节点上用mpirun分配不同数量的MPI进程运行任务

如何用mpirun在双节点按指定数量分配MPI进程

没问题,我来帮你搞定这个MPI进程分配的需求!针对你的双节点服务器(每个节点12物理核+12超线程,共24逻辑核),要让一个节点跑20个进程、另一个跑18个,有两种常用的实现方式:

方法1:使用主机配置文件(Hostfile)

这种方式适合需要重复使用相同节点配置的场景:

  1. 先创建一个主机配置文件,比如命名为mpi_hosts,内容如下(把node1node2替换成你实际的节点主机名或IP):
node1 slots=20
node2 slots=18
  1. 执行mpirun命令启动任务,指定总进程数和主机文件:
mpirun -np 38 --hostfile mpi_hosts ./your_mpi_executable
  • 这里-np 38是总进程数(20+18),主机文件里的slots字段明确指定每个节点要启动的进程数。

方法2:直接在命令行指定节点与进程数

如果只是临时运行一次,直接在命令行里指定更快捷:

mpirun --host node1:20,node2:18 ./your_mpi_executable

或者拆分参数的写法:

mpirun -np 20 node1:20 -np 18 node2:18 ./your_mpi_executable
  • 冒号:后面的数字就是对应节点要启动的MPI进程数,mpirun会自动计算总进程数,不需要额外指定-np(不过指定了也没关系,只要总数匹配就行)。

额外注意事项

  • SSH免密登录:确保两个节点之间已经配置好SSH免密登录,否则mpirun无法在远程节点自动启动进程。
  • 核心绑定(可选):如果想让每个进程绑定到独立的逻辑核,避免超线程调度冲突,可以加上--bind-to core参数,比如:
mpirun --host node1:20,node2:18 --bind-to core ./your_mpi_executable
  • 你的节点每个有24逻辑核,20和18的进程数都在核心数范围内,不会出现资源过载的问题。

内容的提问来源于stack exchange,提问作者Prakash Mudholkar

火山引擎 最新活动