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

如何向SLURM集群提交可匹配多个账户空闲资源的作业?

SLURM多账户排队作业配置方法

你之前用的--account=X,Y写法本身就不符合SLURM的参数规则,无效是正常的:SLURM的--account参数仅支持传入单个账户名,不支持逗号分隔多值做轮询调度,传多值时要么直接报参数错误,要么只会识别第一个传入的账户,根本达不到跨账户等资源的效果。

可落地的实现方案

目前普通用户可自行操作、不需要管理员改配置的最稳妥方案是提交两份相同作业+双向互斥取消依赖,逻辑就是分别给两个账户各投一份一模一样的作业,只要其中一个先抢到资源启动,另一个就自动取消,完全不会出现重复跑作业浪费资源的问题。
操作步骤:

  1. 先提交绑定账户X的作业,记录返回的作业ID,比如记为JOB_X:
sbatch --account=X your_job.slurm
  1. 提交绑定账户Y的作业,加依赖规则:只要X作业启动运行,当前Y作业就自动取消,提交时用--parsable参数直接拿到Y的作业ID记为JOB_Y:
JOB_Y=$(sbatch --account=Y --dependency=afterstart:$JOB_X?cancel --parsable your_job.slurm)
  1. 给最开始提交的X作业补上反向依赖:只要Y作业先启动运行,X作业自动取消:
scontrol update jobid=$JOB_X dependency=afterstart:$JOB_Y?cancel

这个方法所有主流版本的SLURM都支持,不需要找管理员开权限,自己敲3条命令就能搞定。

如果你们集群管理流程比较灵活,也可以找管理员在SLURM记账系统里给你配一个同时关联X、Y两个账户资源池的专用QoS,之后提交作业只需要指定这个QoS,不用单独传account参数,调度器会自动在两个账户的资源池里找空闲资源调度,提交命令类似:

sbatch --qos=cross_account_pool your_job.slurm

这个方案用起来更省事,但必须要管理员配合做配置,普通用户自己改不了。

避坑提醒:不要自己写shell循环反复修改排队作业的account参数,SLURM对频繁修改属性的作业会做优先级降权处理,反而会让你的作业排更久的队。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:45:37