Slurm 作业调度系统 | 您所在的位置:网站首页 › 超算集群是什么 › Slurm 作业调度系统 |
Slurm 作业调度系统¶
SLURM (Simple Linux Utility for Resource Management)是一种可扩展的工作负载管理器,已被全世界的国家超级计算机中心广泛采用。 它是免费且开源的,根据GPL通用公共许可证发行。 本文档将协助您通过 Slurm 管理作业。 在这里可以找到更多的工作样本。 如果我们可以提供任何帮助,请随时联系 HPC 邮箱。 Tip 由于跨系统文本编码的问题,我们强烈建议您只用英文字符和数字命名文件夹和目录,并且不要使用特殊字符,以确保作业能顺利运行。 Slurm 概览¶Slurm 功能 sinfo 集群状态 squeue 排队作业状态 sbatch 作业提交 scontrol 查看和修改作业参数 sacct 已完成作业报告 scancel 删除作业 sinfo 查看集群状态¶Slurm 功能 sinfo -N 查看节点级信息 sinfo -N --states=idle 查看可用节点信息 sinfo --partition=cpu 查看队列信息 sinfo --help 查看所有选项 节点状态包括: drain(节点故障),alloc(节点在用),idle(节点可用),down(节点下线),mix(节点部分占用,但仍有剩余资源)。 查看总体资源信息: $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST cpu up 7-00:00:0 656 idle cas[001-656] dgx2 up 7-00:00:0 8 idle vol[01-08] squeue 查看作业信息¶Slurm 功能 squeue -j jobid 查看作业信息 squeue -l 查看细节信息 squeue -n HOST 查看特定节点作业信息 squeue 查看USER_LIST的作业 squeue --state=R 查看特定状态的作业 squeue --help 查看所有的选项 作业状态包括R(正在运行),PD(正在排队),CG(即将完成),CD(已完成)。 默认情况下,squeue只会展示在排队或在运行的作业。 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 18046 dgx2 ZXLing eenl R 1:35:53 1 vol04 17796 dgx2 python eexdl R 3-00:22:04 1 vol02显示您自己账户下的作业: squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 17923 dgx2 bash hpcwj R 1-12:59:05 1 vol05-l选项可以显示更细节的信息。 squeue JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON) 17923 dgx2 bash hpcwj RUNNING 1-13:00:53 30-00:00:00 1 vol05 SBATCH 作业提交¶准备作业脚本然后通过sbatch提交是 Slurm 的最常见用法。 为了将作业脚本提交给作业系统,Slurm 使用 $ sbatch jobscript.slurmSlurm 具有丰富的参数集。 以下最常用的。 Slurm 含义 -n [count] 总进程数 --ntasks-per-node=[count] 每台节点上的进程数 -p [partition] 作业队列 --job-name=[name] 作业名 --output=[file_name] 标准输出文件 --error=[file_name] 标准错误文件 --time=[dd-hh:mm:ss] 作业最大运行时长 --exclusive 独占节点 --mail-type=[type] 通知类型,可选 all, fail, end,分别对应全通知、故障通知、结束通知 --mail-user=[mail_address] 通知邮箱 --nodelist=[nodes] 偏好的作业节点 --exclude=[nodes] 避免的作业节点 --depend=[state:job_id] 作业依赖 --array=[array_spec] 序列作业 这是一个名为cpu.slurm的作业脚本,该脚本向cpu队列申请1个节点40核,并在作业完成时通知。在此作业中执行的命令是/bin/hostname。 #!/bin/bash #SBATCH --job-name=hostname #SBATCH --partition=cpu #SBATCH -N 1 #SBATCH --mail-type=end #SBATCH [email protected] #SBATCH --output=%j.out #SBATCH --error=%j.err /bin/hostname用以下方式提交作业: sbatch cpu.slurmsqueue可用于检查作业状态。用户可以在作业执行期间通过SSH登录到计算节点。输出将实时更新到文件[jobid] .out和[jobid] .err。 这里展示一个更复杂的作业要求,其中将启动80个进程,每台主机40个进程。 #!/bin/bash #SBATCH --job-name=LINPACK #SBATCH --partition=cpu #SBATCH -n 80 #SBATCH --ntasks-per-node=40 #SBATCH --mail-type=end #SBATCH [email protected] #SBATCH --output=%j.out #SBATCH --error=%j.err以下作业请求4张GPU卡,其中1个CPU进程管理1张GPU卡。 #!/bin/bash #SBATCH --job-name=GPU_HPL #SBATCH --partition=dgx2 #SBATCH -n 4 #SBATCH --ntasks-per-node=4 #SBATCH --gres=gpu:4 #SBATCH --mail-type=end #SBATCH [email protected] #SBATCH --output=%j.out #SBATCH --error=%j.err以下作业启动一个3任务序列(从0到2),每个任务需要1个CPU内核。关于集群上的Python,您可以查阅我们的Python文档。 #!/bin/bash #SBATCH --job-name=python_array #SBATCH [email protected] #SBATCH --mail-type=ALL #SBATCH --ntasks=1 #SBATCH --time=00:30:00 #SBATCH --array=0-2 #SBATCH --output=python_array_%A_%a.out #SBATCH --output=python_array_%A_%a.err module load miniconda2/4.6.14-gcc-4.8.5 source activate YOUR_ENV_NAME echo "SLURM_JOBID: " $SLURM_JOBID echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID echo "SLURM_ARRAY_JOB_ID: " $SLURM_ARRAY_JOB_ID python |
CopyRight 2018-2019 实验室设备网 版权所有 |