You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SLURM:在同一节点集运行不同配置的两个Intel MPI任务

解决Intel MPI在SLURM下的进程布局问题

要实现你需要的进程布局,核心是给每个mpiexec任务强制指定节点与对应进程数,绕过SLURM对Intel MPI进程分配的自动干预。以下是具体实现步骤:

1. 提取SLURM分配的节点信息

先从SLURM环境变量中获取分配的节点名,避免硬编码:

# 拆分SLURM分配的节点列表为单个节点名
NODES=($(scontrol show hostnames $SLURM_JOB_NODELIST))
NODE0=${NODES[0]}
NODE1=${NODES[1]}

2. 为每个mpiexec任务指定进程布局

利用Intel MPI的-host参数直接定义每个节点的进程数(格式:节点名:进程数),同时禁用PMI避免冲突:

第一个MPI任务(8进程,node0/4个,node1/4个)

# 禁用PMI,用SSH启动进程,强制指定节点进程数
mpiexec -bootstrap ssh -np 8 -host ${NODE0}:4,${NODE1}:4 ./your_first_mpi_program

此配置会严格在node0分配rank 0-3,node1分配rank 4-7。

第二个MPI任务(2进程,node0/1个,node1/1个)

mpiexec -bootstrap ssh -np 2 -host ${NODE0}:1,${NODE1}:1 ./your_second_mpi_program

此配置会在node0分配rank 0,node1分配rank 1。

3. 并行运行两个任务(可选)

如果需要两个任务同时执行,可将它们后台运行后等待完成:

mpiexec -bootstrap ssh -np 8 -host ${NODE0}:4,${NODE1}:4 ./your_first_mpi_program &
mpiexec -bootstrap ssh -np 2 -host ${NODE0}:1,${NODE1}:1 ./your_second_mpi_program &
wait

为什么之前的参数无效?

在SLURM环境下,Intel MPI默认会自动读取SLURM的节点分配信息,这会覆盖-ppn、I_MPI_PERHOST等手动设置的布局参数。而-host参数属于显式强制指定,优先级高于SLURM的自动分配逻辑,因此能精准控制进程分布。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:05:19