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

如何配置Slurm作业阵列,使其仅使用2个节点?

如何让Slurm作业阵列仅使用指定数量的节点

你的核心需求是让整个作业阵列(而非单个任务)固定使用2个节点,而非限制并发任务数。原来的--nodes=1是针对每个阵列任务的配置,要实现整体节点限制,需要调整作业级别的资源参数:

方案1:固定每个节点的任务数

如果10个阵列任务的资源需求一致,可以直接指定节点数和每个节点承载的任务数,确保刚好填满2个节点:

#!/usr/bin/env bash

#SBATCH --nodes=2               # 整个作业阵列预留2个节点
#SBATCH --ntasks-per-node=5     # 每个节点运行5个任务(2*5=10,匹配阵列总数)
#SBATCH --cpus-per-task=1       # 每个任务占用1个CPU核心
#SBATCH --array=1-10            # 共10个阵列任务

module load python

python script.py
  • --nodes=2现在是整个作业阵列的节点配额,Slurm会为这10个任务预留2个节点,不会分配额外节点
  • --ntasks-per-node=5明确每个节点承载的任务数,确保资源刚好被利用

方案2:让调度器自动分配任务

如果不需要固定每个节点的任务数,也可以直接指定总节点数和总任务数,由Slurm调度器自动在2个节点上分配10个任务:

#!/usr/bin/env bash

#SBATCH --nodes=2               # 整个作业阵列使用2个节点
#SBATCH --ntasks=10             # 总任务数与阵列数一致
#SBATCH --cpus-per-task=1
#SBATCH --array=1-10

module load python

python script.py

这种方式更灵活,调度器会根据节点的空闲资源自动分配任务分布,只要总任务数不超过2个节点的资源总和即可。

注意事项

  • 需要确保你的集群允许阵列任务共享节点(大部分默认支持,如果遇到问题可联系集群管理员确认)
  • 如果每个任务需要更多资源(比如多CPU、大内存),请调整--cpus-per-task或--mem参数,同时对应修改--ntasks-per-node的数值,避免单个节点资源过载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:40:28