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

Hoffman2受限500作业时,如何提交10万规模作业数组?

在Hoffman2上批量提交10万作业并保持500并发的解决方案

Hoffman2使用的是Univa Grid Engine(UGE)调度器,和Slurm的语法不兼容,你用的-t 1-100000%500是Slurm专属写法,UGE不识别。要控制作业数组的并发数,得用UGE原生的-tc(task concurrency)参数,下面给出两种可行的修改方式:

方法一:直接把目标任务做成带并发限制的数组作业(推荐)

你当前的脚本是用一个数组作业批量提交submit_job.sh,这种方式会额外占用作业额度(数组的每个任务本身也算一个作业)。更高效的做法是直接将submit_job.sh的逻辑做成数组作业,用-tc限制并发数:

#!/bin/bash
#$ -cwd
#$ -o test.joblog.$JOB_ID.$SGE_TASK_ID
#$ -j y
#$ -l h_data=3G,h_rt=02:00:00
#$ -m n
#$ -t 1-100000
#$ -tc 500  # 核心参数:限制数组同时运行的任务数为500

echo "STARTING TIME -- $(date) "
echo "TASK ID: $SGE_TASK_ID"
# 直接调用你的任务脚本并传递任务ID
./submit_job.sh $SGE_TASK_ID

提交后,UGE会自动维持最多500个任务同时运行,当有任务完成时,会自动启动下一个任务,不会触发用户500作业上限的限制。

方法二:保留外层提交逻辑(仅特殊场景使用)

如果必须保留“用数组作业提交其他作业”的原有模式,可以给外层数组添加-tc 500,同时让每个提交动作等待作业完成后再继续:

#!/bin/bash
#$ -cwd
#$ -o test.joblog.LOOP.$JOB_ID.$SGE_TASK_ID
#$ -j y
#$ -l h_data=3G,h_rt=02:00:00
#$ -m n
#$ -t 1-100000
#$ -tc 500  # 限制外层数组同时运行500个任务

echo "STARTING TIME -- $(date) "
echo "$SGE_TASK_ID"
# 加-sync y让qsub等待提交的作业完成再退出,避免瞬间提交大量作业触发上限
/u/systems/UGE8.6.4/bin/lx-amd64/qsub -sync y submit_job.sh $SGE_TASK_ID

这种方式会额外占用500个外层作业的额度,效率不如方法一,仅在必须保留原有提交流程时使用。

验证并发数

提交作业后,可以用以下命令查看当前运行的作业数,确认是否控制在500以内:

qstat -u $USER | grep -c "r"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:10:42