好这里给你整理一份Slurm 详细用法指南从基础到进阶都涵盖结合你在 HPC 上跑 NBody6 的场景。1️⃣ Slurm 简介Slurm Simple Linux Utility for Resource Management用于集群作业调度和资源管理管理 CPU、GPU/DCU、内存、节点、队列Partition用户通过作业脚本或命令行提交计算任务2️⃣ 基本概念名称含义Partition集群中的队列或资源池比如kshdexclu10Node计算节点如j16r2n00CPU Core节点的处理核心Gres可选资源GPU / DCU / MICJob用户提交的计算任务JobIDSlurm 给作业分配的唯一编号srun启动并行作业的命令sbatch提交批处理作业脚本scancel取消作业3️⃣ 常用命令查询状态sinfo# 查看集群分区状态sinfo-N# 查看各节点状态squeue# 查看你提交的作业队列squeue-u$USER# 查看自己的作业scontrol shownodenodename# 查看节点详情提交作业批处理提交脚本方式sbatch nbody.sbatch交互式运行适合调试srun-pkshdexclu10-N1--gresdcu:1--ptybash-p指定 Partition-N分配节点数--gresdcu:1分配 1 个 DCU--pty bash打开交互 shell取消作业scancelJobID4️⃣ 作业脚本示例nbody.sbatch示例#!/bin/bash#SBATCH --job-namenbody_test#SBATCH --outputnbody_%j.out # %j - JobID#SBATCH --errornbody_%j.err#SBATCH --partitionkshdexclu10#SBATCH --nodes1#SBATCH --ntasks4 # MPI 进程数#SBATCH --cpus-per-task8#SBATCH --gresdcu:1#SBATCH --time02:00:00 # hh:mm:ss#SBATCH --mem120Gmodule purge module load compiler/gcc/11.3.0 module load mpi/openmpi/4.1.2 module load compiler/dtk/23.04exportOMP_NUM_THREADS8ulimit-sunlimitedexportOMP_STACKSIZE80GechoRunning NBody6 with$SLURM_NTASKSMPI tasks and$OMP_NUM_THREADSthreadsmpirun-np$SLURM_NTASKS../install/bin/nbody6N10k_noDat10.inp5️⃣srun和mpirun的区别命令用途srunSlurm 原生并行运行命令会自动分配资源mpirun/mpiexec启动 MPI 程序需要手动匹配 Slurm 分配的资源通常和 OpenMPI 配合推荐srun-n4../install/bin/nbody6input.inpSlurm 会自动绑定 CPU / GPU不用手动mpirun减少出错概率6️⃣ 交互式调试快速测试程序或修改参数不用写 sbatch 文件srun-pkshdexclu10-N1--ntasks1--gresdcu:1--ptybash进入节点后../install/bin/nbody6N10k_noDat10.inp7️⃣ 高级用法同时请求多节点多 GPUsbatch-pkshdexclu10-N2--ntasks-per-node4--gresdcu:2 nbody.sbatch2 个节点每个节点 4 个 MPI 进程每个节点分配 2 张 DCUSlurm 会帮你调度不会占用其它空闲节点设置作业依赖sbatch--dependencyafterok:JobIDnext_job.sbatch下一步作业会在JobID成功完成后才启动查看详细作业信息scontrol show jobJobID8️⃣ Tips作业输出文件最好包含%j避免覆盖**--ntasks与--cpus-per-task**区分 MPI 进程数和每个进程的线程数--gres对 GPU / DCU 必须指定否则程序找不到 GPU调试小作业在交互节点测试正式大作业用 sbatch 提交如果你愿意我可以帮你画一张Slurm 作业提交流程图从提交 - 分配节点 - 运行 - 输出 - 结束让整个流程一眼就看明白非常适合新手 HPC 使用。
Slurm用法简介
好这里给你整理一份Slurm 详细用法指南从基础到进阶都涵盖结合你在 HPC 上跑 NBody6 的场景。1️⃣ Slurm 简介Slurm Simple Linux Utility for Resource Management用于集群作业调度和资源管理管理 CPU、GPU/DCU、内存、节点、队列Partition用户通过作业脚本或命令行提交计算任务2️⃣ 基本概念名称含义Partition集群中的队列或资源池比如kshdexclu10Node计算节点如j16r2n00CPU Core节点的处理核心Gres可选资源GPU / DCU / MICJob用户提交的计算任务JobIDSlurm 给作业分配的唯一编号srun启动并行作业的命令sbatch提交批处理作业脚本scancel取消作业3️⃣ 常用命令查询状态sinfo# 查看集群分区状态sinfo-N# 查看各节点状态squeue# 查看你提交的作业队列squeue-u$USER# 查看自己的作业scontrol shownodenodename# 查看节点详情提交作业批处理提交脚本方式sbatch nbody.sbatch交互式运行适合调试srun-pkshdexclu10-N1--gresdcu:1--ptybash-p指定 Partition-N分配节点数--gresdcu:1分配 1 个 DCU--pty bash打开交互 shell取消作业scancelJobID4️⃣ 作业脚本示例nbody.sbatch示例#!/bin/bash#SBATCH --job-namenbody_test#SBATCH --outputnbody_%j.out # %j - JobID#SBATCH --errornbody_%j.err#SBATCH --partitionkshdexclu10#SBATCH --nodes1#SBATCH --ntasks4 # MPI 进程数#SBATCH --cpus-per-task8#SBATCH --gresdcu:1#SBATCH --time02:00:00 # hh:mm:ss#SBATCH --mem120Gmodule purge module load compiler/gcc/11.3.0 module load mpi/openmpi/4.1.2 module load compiler/dtk/23.04exportOMP_NUM_THREADS8ulimit-sunlimitedexportOMP_STACKSIZE80GechoRunning NBody6 with$SLURM_NTASKSMPI tasks and$OMP_NUM_THREADSthreadsmpirun-np$SLURM_NTASKS../install/bin/nbody6N10k_noDat10.inp5️⃣srun和mpirun的区别命令用途srunSlurm 原生并行运行命令会自动分配资源mpirun/mpiexec启动 MPI 程序需要手动匹配 Slurm 分配的资源通常和 OpenMPI 配合推荐srun-n4../install/bin/nbody6input.inpSlurm 会自动绑定 CPU / GPU不用手动mpirun减少出错概率6️⃣ 交互式调试快速测试程序或修改参数不用写 sbatch 文件srun-pkshdexclu10-N1--ntasks1--gresdcu:1--ptybash进入节点后../install/bin/nbody6N10k_noDat10.inp7️⃣ 高级用法同时请求多节点多 GPUsbatch-pkshdexclu10-N2--ntasks-per-node4--gresdcu:2 nbody.sbatch2 个节点每个节点 4 个 MPI 进程每个节点分配 2 张 DCUSlurm 会帮你调度不会占用其它空闲节点设置作业依赖sbatch--dependencyafterok:JobIDnext_job.sbatch下一步作业会在JobID成功完成后才启动查看详细作业信息scontrol show jobJobID8️⃣ Tips作业输出文件最好包含%j避免覆盖**--ntasks与--cpus-per-task**区分 MPI 进程数和每个进程的线程数--gres对 GPU / DCU 必须指定否则程序找不到 GPU调试小作业在交互节点测试正式大作业用 sbatch 提交如果你愿意我可以帮你画一张Slurm 作业提交流程图从提交 - 分配节点 - 运行 - 输出 - 结束让整个流程一眼就看明白非常适合新手 HPC 使用。