SuperAPI AI 工具集

slurm-hpc

测试与质量

查看项目

更新于 10-15 20:33

技能介绍

用途:提供可移植的 Slurm 参考,帮助编写批处理作业并理解任意集群上的资源隔离,不绑定特定站点;若针对某个具体仓库的配方与布局,应优先使用该项目自带的技能。

主要能力:编写或修复 sbatch 脚本与 srun 命令行;选择资源请求(CPU、内存、GPU、时间、分区);读取作业/队列/节点状态(squeue、sacct、sinfo、scontrol);理解作业隔离(cgroups)与 GPU 显存围栏机制。

使用方式:批处理脚本以 #!/bin/bash 开头,用 #SBATCH 指令声明 --job-name、--partition、--gres=gpu:1、--cpus-per-task、--mem、--time、--output 等,再用 srun 运行程序。提交用 sbatch script.sh,查看用 squeue -j <id>,结束后用 sacct -j <id> --format=JobID,State,ExitCode,Elapsed,MaxRSS,ReqTRES,AllocTRES,取消用 scancel <id>。可用 --dependency=afterok:<id> 串联作业,或用 sbatch --wait 阻塞等待。

适用场景:通用集群上的作业编写、资源申请、状态排查与隔离机制判断。

限制:不适用于操作带自有配方的特定项目集群,也不适用于从零设计集群配置(属管理员工作)。--gres=shard:N 与普通 --gres=mps:N 不隔离显存,只有设置固定显存上限的 MPS 或 MIG 才强制每作业显存上限;MIG 需数据中心 GPU。--mem 在 cgroups 下是硬上限,超限会被 OOM 杀死。sacct 需配置 accounting(slurmdbd)。afterany 是默认依赖类型,失败父作业会使子作业永久 PENDING,需 --kill-on-invalid-dep=yes。--parsable 输出 jobid;cluster,需用 ${JID%%;*} 去除。sbatch --wait 会把信号死亡统一为退出码 1,需查 sacct 获取真实状态。srun --oversubscribe 在可消耗资源下被忽略。