外观
srun 交互式提交作业
srun 适合交互式提交作业,可以申请资源并立即运行命令,程序输出会直接显示在当前终端。它常用于检查环境、短时间测试脚本、查看程序实时输出。
需要注意的是,srun 与当前终端会话关系较紧密,网络断开或关闭窗口可能影响正在运行的交互式任务。正式、长时间运行的任务建议使用 sbatch 批量提交作业。
srun 简介
是 Slurm 工作负载管理器中的核心命令,用于请求计算资源并在这些资源上运行作业。它既可以用于交互式任务,也可以用于批处理作业的提交。
bash
# 首先,使用srun命令来提交作业到计算集群中,以下是 srun 的基本用法,常见选项。
srun [OPTIONS] <command>
# 例如,要运行一个名为 my_program 的程序:
srun my_program
# 资源请求选项
**--ntasks 或 -n**:指定要启动的任务数。
**--ntasks-per-node**:指定每个节点运行的任务数。
**--nodes 或 -N**:指定需要多少个节点。
**--cpus-per-task**:为每个任务分配的 CPU 核心数。
**--mem**:为每个节点分配的内存。
**--gres**:请求特殊资源(例如 GPU),通常用于 GPU 任务。
# 任务调度选项
**--time 或 -t**:指定作业运行的最大时间,格式为 HH:MM:SS。
**--partition 或 -p**:指定在哪个分区(partition)运行任务。
**--exclusive**:指定该作业在每个节点上独占资源,其他作业无法在相同节点上运行。
# 作业控制选项
**--job-name 或 -J**:为作业指定一个名字,便于识别和管理。
**--output 或 -o**:指定标准输出日志文件。
**--error 或 -e**:指定标准错误日志文件。
**--begin**:指定作业开始的时间。
**--mail-type**:指定作业通知的类型,可以是 BEGIN、END、FAIL 等.
**--mail-use**: 指定收件邮箱地址。与 sbatch 的区别
srun和sbatch是 Slurm 中的两个常用命令,它们都用于提交作业,但有不同的用途:srun:用于交互式作业,立即分配资源并执行命令。它适合需要实时查看程序输出或调试的任务。bash[demo@login2 ~]$ srun --ntasks=4 my_programsbatch:用于批处理作业,将作业提交给调度器,并让其后台排队运行。它更适合长时间、无需交互的任务。bash[demo@login2 ~]$ sbatch job_script.sh
实时交互式作业-示例1
单节点上运行4个并行任务,每个任务2个CPU核心,指定分区中运行作业,作业最多运行2分钟。z作业执行hostname命令获取主机名称。
bash
[demo@login2 ~]$ srun \
--nodes=1 \
--ntasks=4 \
--cpus-per-task=2 \
--partition=qcpu_18i \
--time=2:00 \
hostname
bnode1.tibhpc.net
bnode1.tibhpc.net
bnode1.tibhpc.net
bnode1.tibhpc.net实时交互式作业-示例2
2节点上运行任务,每个节点运行2个任务,每个任务2个CPU核心,指定分区中运行作业,作业最多运行2分钟,并且需要两块GPU。作业执行hostname命令获取主机名称。
bash
[demo@login2 ~]$ srun \
--nodes=2 \
--ntasks-per-node=2 \
--cpus-per-task=2 \
--partition=qgpu_a40 \
--time=2:00 \
--gres=gpu:2 \
hostname
gnode9.tibhpc.net
gnode9.tibhpc.net
gnode8.tibhpc.net
gnode8.tibhpc.net调试与优化
查看实时任务信息:如任务时间执行较长,可使用 squeue 查看作业队列中的任务状态。
bash
[demo@login2 ~]$ squeue调整资源分配:根据程序的性能分析结果,合理调整任务的数量、CPU 和内存分配以优化运行时间。
视频示例

