Slurm背景:
Slurm 是一种开源的作业调度系统,它用于管理大型计算集群中的计算资源和作业。你可以把它想象成一个“交通管制员”,负责管理计算集群中的各种任务,确保它们按照用户设定的规则有序地执行。
Slurm 的主要功能包括:
作业调度和管理:Slurm 可以根据用户提交的作业需求,有效地分配计算资源,确保作业能够尽快地得到执行。
资源分配:它负责管理计算集群中的节点、核心和内存等资源,并根据作业需求动态地分配这些资源。
作业监控:Slurm 可以实时监控作业的执行情况,包括作业的状态、进度和资源使用情况等。
用户管理:它允许系统管理员管理用户和用户组,并为每个用户分配适当的权限和资源配额。
总的来说,Slurm 是一个帮助管理大型计算集群的工具,它能够有效地管理计算资源,提高系统的利用率,并为用户提供方便的作业提交和管理功能。
一.如何运行及提交作业
- 本地创建好conda环境(假设conda名为myenv),并且保证conda已加入环境变量;
- 确定好自己可以访问分区名(假设分区名为ampere);
- 创建好自己想要运行的程序文件(假设为shell.py);
在自己要提交的项目文件夹下创建.sh脚本文件(假设脚本文件x.sh),在该脚本文件中编辑:
#!/bin/bash #SBATCH --mem=200GB #SBATCH --partition=ampere #SBATCH --job-name=part1 #SBATCH --output=part1.out #SBATCH --nodes=1 #SBATCH --tasks=1 #SBATCH --gres=gpu:1 #SBATCH --error=part1.err source activate myenv python shell.py
每次提交被视为一个job,--job-name为这次job的名称,--output指定这次运行结果的输出文件, --error指定这次运行如果出错,相关报错的输出文件。
--mem 为当前job指定内存空间
--nodes 为当前job指定运行节点个数
--tasks 为当前job指定运行任务个数
--gres 为当前job指定使用的gpu
二.slurm常用命令
查看某一分区(假设分区名称为name)作业运行情况
squeue --partition=name
查看某一用户(假设用户名称为user_name)的所有作业运行情况:
squeue --user=user_name
取消自己提交的某一作业(假设job id为7766)
scancel 7755