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

Slurm作业srun仅启动1个进程问题求助(附脚本及输出)

问题解决:Slurm中srun仅启动单个MPI进程重复执行

核心原因

你的MPI程序未被正确编译为多进程版本,或是Slurm与MPI的集成配置存在问题,导致srun -n 16实际是重复启动了16次单进程MPI程序,而非16个并行进程。

解决步骤

1. 确保MPI程序正确编译

使用集群对应的MPI编译器重新编译代码,例如OpenMPI环境下用mpicc:

mpicc firstmpi.c -o firstmpi

若集群使用Intel MPI,则替换为mpiicc,具体可通过module avail查看集群可用的MPI模块。

2. 调整Slurm脚本与srun参数

方案A:让Slurm管理任务数(推荐)

修改脚本,移除srun中的-n 16,改用SBATCH参数指定总任务数,让srun自动继承Slurm的资源分配:

#!/bin/bash
#SBATCH -N 1
#SBATCH -p RM
#SBATCH -t 00:01:00
#SBATCH --ntasks=16  # 指定总任务数,替代仅节点内任务数的设置
#SBATCH --error=job.err 
#SBATCH --output=job.out

# 加载MPI模块(根据集群实际情况调整,例如openmpi/4.1.5)
module load openmpi

srun ./firstmpi > out

方案B:显式指定MPI集成参数

若必须在srun中指定任务数,添加--mpi=pmi2(或集群支持的其他MPI接口),确保Slurm与MPI正常通信:

srun --mpi=pmi2 -n 16 ./firstmpi > out

3. 验证MPI环境

提交作业前,确认已加载正确的MPI模块:

module list

若未加载,执行module load <mpi-module-name>,例如module load openmpi。

验证结果

重新编译并提交作业后,输出应显示不同的进程rank,示例如下:

Hello world from processor r309.ib.bridges2.psc.edu, rank 0 out of 16 processors
Hello world from processor r309.ib.bridges2.psc.edu, rank 1 out of 16 processors
...
Hello world from processor r309.ib.bridges2.psc.edu, rank 15 out of 16 processors

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:43:37