{% extends "base.html" %} {% block title %}Slurm 操作手册{% endblock %} {% block breadcrumb_title %}Slurm 操作手册{% endblock %} {% block head_extra %} {% endblock %} {% block content %}
快速开始:登录计算集群后,先用 cd 进入工作目录;建议优先使用 sbatch 提交可重复的脚本作业,使用 squeue 查看队列,并在作业结束后检查输出文件和退出状态。

Linux 基础命令

ssh连接登录节点:ssh user@login.example.com;不要在登录节点运行长时间计算
cd切换目录:cd ~/projectcd .. 返回上级目录
vi编辑脚本:vi job.slurm;按 i 编辑,按 Esc 后输入 :wq 保存退出
cp复制文件或目录:cp input.dat backup.dat;目录使用 cp -r
scp在本地与远程主机间复制:scp result.csv user@login.example.com:~/results/;目录使用 scp -r
rsync增量同步目录:rsync -avP data/ user@login.example.com:~/data/;适合大文件和中断后续传
tmux保持终端会话:tmux new -s work 创建,按 Ctrl-b d 暂离,tmux attach -t work 恢复
find查找文件:find . -name '*.sh';可配合 -type f 限定文件
cat查看文件:cat job.sh;大文件可使用 less output.log
grep搜索日志或文本:grep -n 'ERROR' logs/*.err-i 可忽略大小写
tail跟踪输出文件:tail -f logs/demo-12345.out;按 Ctrl-c 停止跟踪
mkdir / chmod创建目录和设置脚本权限:mkdir -p logschmod +x job.sh
pwd / ls查看当前路径和目录内容:pwdls -lh

Slurm 作业命令

srun交互式运行,适合短时测试:srun -p cpu -c 4 --mem=8G --time=00:30:00 --pty bash
sbatch提交批处理脚本:sbatch job.sh;返回作业 ID
squeue查看队列:squeue -u $USER 查看自己的作业
scancel取消作业:scancel 12345;取消自己的作业或确认已获授权
sstat查看运行中作业资源:sstat 12345;可观察内存和 CPU 使用情况
sacct查询历史作业和退出码:sacct -j 12345 --format=JobID,State,Elapsed,ExitCode
sreport查看集群资源统计:sreport cluster utilization start=2026-01-01
sinfo查看分区和节点状态:sinfo -o '%P %a %l %D %C'
scontrol查看作业详情:scontrol show job 12345;可确认实际分配的节点和资源

作业脚本模板

将下面内容保存为 job.sh。每行 #SBATCH 都是提交参数,先按集群实际分区和资源名称修改,再提交。

#!/bin/bash
# 作业名称,便于在 squeue 中识别
#SBATCH --job-name=demo
# 分区名称,按集群实际配置填写
#SBATCH --partition=cpu
# 申请节点数
#SBATCH --nodes=1
# 申请的任务/进程数
#SBATCH --ntasks=1
# 每个任务使用的 CPU 核数
#SBATCH --cpus-per-task=4
# 每个节点申请的内存
#SBATCH --mem=8G
# 最长运行时间,格式为 天-时:分:秒
#SBATCH --time=02:00:00
# 标准输出;%x=作业名,%j=作业 ID
#SBATCH --output=logs/%x-%j.out
# 标准错误输出
#SBATCH --error=logs/%x-%j.err
# 排除不希望使用的节点,可用逗号分隔
#SBATCH --exclude=node[01-03]
# 可选:只选择满足特性标签的节点
#SBATCH --constraint=avx2

set -euo pipefail
mkdir -p logs
cd "$SLURM_SUBMIT_DIR"

echo "Job $SLURM_JOB_ID runs on $(hostname)"
echo "Started at $(date)"
# module load your-software/版本
# python train.py --input data/input.csv
srun ./your_program --threads "$SLURM_CPUS_PER_TASK"

echo "Finished at $(date)"

提交与跟踪

chmod +x job.sh
sbatch job.sh
squeue -j JOB_ID
sacct -j JOB_ID --format=JobID,State,Elapsed,MaxRSS,ExitCode

资源参数速查

常见作业类型

短时交互调试

srun -p cpu -c 2 --mem=4G --time=00:30:00 --pty bash

适合检查环境、编译程序和验证输入;测试完成后应退出交互会话。

多任务作业

#SBATCH --ntasks=4
srun ./mpi_program

使用 srun 启动并行任务,避免在脚本中直接后台启动大量进程。

GPU 交互调试

srun -p gpu --gres=gpu:1 -c 4 --mem=16G --time=00:30:00 --pty bash

--gres=gpu:1 表示申请 1 张 GPU;部分集群使用 --gpus=1--gpus-per-node=1,以本集群配置为准。

GPU 作业模板

#!/bin/bash
# 作业名称
#SBATCH --job-name=gpu-demo
# GPU 分区
#SBATCH --partition=gpu
# 申请 1 张 GPU(常见写法)
#SBATCH --gres=gpu:1
# 配套 CPU 核数
#SBATCH --cpus-per-task=8
# 配套主机内存
#SBATCH --mem=32G
# 最长 4 小时
#SBATCH --time=04:00:00
# 标准输出
#SBATCH --output=logs/%x-%j.out
# 可选:排除故障或维护节点
#SBATCH --exclude=gpu-node[07-08]

set -euo pipefail
mkdir -p logs
cd "$SLURM_SUBMIT_DIR"
# module load cuda/版本
nvidia-smi
srun python train.py --epochs 10

GPU 型号限制通常通过 --constraint=a100 等特性标签实现;不要仅凭节点名称猜测 GPU 类型。

作业注意事项

提示:分区名称、可用资源、软件模块和账户权限由集群管理员配置,实际提交参数请以本集群页面中的分区信息和管理员说明为准。
{% endblock %}