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

Slurm集群如何按6个一组批量运行任务列表?

在Slurm集群中批量分组运行任务(6个一组)

下面提供几种实用的实现方法,根据你的任务场景选择即可:

方法1:用GNU Parallel控制并发数

这是最简便的方式,适合任意结构的任务列表:

  1. 把所有srun命令写入一个文本文件(比如job_list.txt),每行一条:
    srun job_1
    srun job_2
    srun job_3
    ...
    
  2. 执行以下命令,指定同时运行6个任务:
    parallel -j 6 < job_list.txt
    
    前6个任务完成后,会自动启动下一批,直到所有任务执行完毕。

方法2:手动写Shell脚本分组

如果集群没有安装GNU Parallel,可通过Shell脚本实现分组控制:

  1. 创建脚本文件batch_run.sh,内容如下:
    #!/bin/bash
    # 列出所有任务命令
    jobs=(
      "srun job_1"
      "srun job_2"
      "srun job_3"
      # 继续添加剩余任务
    )
    
    group_size=6
    total_jobs=${#jobs[@]}
    
    # 按组循环执行
    for ((i=0; i<total_jobs; i+=group_size)); do
      # 启动当前组的所有任务(后台运行)
      for ((j=i; j<i+group_size && j<total_jobs; j++)); do
        ${jobs[j]} &
      done
      # 等待当前组所有任务完成,再启动下一组
      wait
      echo "第 $((i/group_size +1)) 组任务执行完成"
    done
    
  2. 给脚本添加执行权限:
    chmod +x batch_run.sh
    
  3. 运行脚本:
    ./batch_run.sh
    

方法3:Slurm数组任务(适合同结构任务)

如果你的任务是job_1到job_N这种统一命名格式,直接用Slurm的数组任务更高效:

  1. 创建单个任务的脚本job_script.sh:
    #!/bin/bash
    srun job_${SLURM_ARRAY_TASK_ID}
    
  2. 提交数组任务,指定同时运行6个实例:
    sbatch --array=1-N%6 job_script.sh
    
    把N替换成你的总任务数,%6限制了同时运行的数组任务数量为6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:54:57