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

Ubuntu 18.04单节点SLURM无法并行运行任务求助

解决SLURM单节点任务串行执行的问题

看起来你遇到的核心问题是SLURM的任务管理插件配置不正确,导致无法正确分配CPU资源,进而让任务被迫串行执行。咱们一步步来排查和修复:

1. 修复SLURM核心配置(slurm.conf)

你的slurm.conf里有一个关键错误:

TaskPlugin=task/none

task/none意味着SLURM完全不进行任务的CPU绑定和资源隔离,这会导致第一个启动的srun进程直接占用节点的所有CPU资源,后续任务因资源不足只能排队等待。

修改方法:
编辑你的SLURM配置文件(通常路径是/etc/slurm-llnl/slurm.conf),将这一行替换为:

TaskPlugin=task/affinity

这个插件允许SLURM管理任务与CPU核心/线程的绑定关系,确保多个任务可以并行分配到不同的资源上。

另外,你的SelectTypeParameters=CR_Core是合理的(按核心分配资源),如果想充分利用超线程(每个核心2线程)来运行更多并行任务,可以改为:

SelectTypeParameters=CR_Thread

这样每个任务会占用1个线程,你的8线程节点就能同时运行8个单线程任务。

2. 重启SLURM服务使配置生效

修改配置后,必须重启SLURM的控制和节点服务才能让新配置生效:

sudo systemctl restart slurmctld
sudo systemctl restart slurmd

3. 使用正确的任务提交脚本

你之前用多个srun加&的方式并不符合SLURM的最佳实践,还容易引发资源分配冲突。推荐用更简洁规范的提交脚本:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=3
#SBATCH --cpus-per-task=1

# 用srun一次性启动所有并行任务,%t会自动替换为任务编号(0,1,2)
srun python demo.py %t

提交这个脚本:

sbatch your_submit_script.sh

这样SLURM会自动帮你并行启动3个任务,每个任务分配1个CPU核心(或线程,取决于你之前的SelectTypeParameters配置)。

4. 验证修复效果

提交任务后,用以下命令查看任务状态和资源分配:

squeue -o "%N %c %t %J"

你应该能看到3个任务都处于RUNNING状态,每个任务占用1个CPU资源。

为什么之前的--oversubscribe无效?

--oversubscribe需要SLURM有正确的任务管理插件支持,当TaskPlugin=task/none时,SLURM无法识别资源分配规则,这个参数自然无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:34:31