/knowledge/notes/running-jobs-on-spartan
概念笔记 · 集群与云
在 Spartan 上运行任务
HPC 任务提交
- 学于
- 集群与云计算COMP90024
- 时间
- 2023 年第一学期
- 应用于
- 作业 1
- 阅读 / 复习
- 约 5 分钟阅读2026-10-15
Spartan 是墨尔本大学的 HPC 集群。作业以脚本形式提交,脚本描述资源、持续时间和要运行的命令。这篇笔记涵盖编写有效 SLURM 脚本和理解队列行为所需的最少知识。
01
基本想法
Spartan 使用 SLURM(Simple Linux Utility for Resource Management)来调度作业。编写一个 shell 脚本,包含资源指令(以 #SBATCH 开头的行),告诉调度程序需要多少核心、多少内存以及需要多长时间。用 sbatch script.sh 提交,它会等待在队列中,直到有足够的资源可用。
三个最重要的指令是 #SBATCH --nodes(多少个物理节点),#SBATCH --ntasks-per-node(每个节点上多少个进程),和 #SBATCH --cpus-per-task(每个进程多少个核心)。它们的乘积就是总并行度。
理解任务和 CPU 数量之间的区别对于混合并行性(例如 MPI + OpenMP)很重要。一个有 4 个节点、每个节点 2 个任务、每个任务 8 个 CPU 的作业运行 8 个进程,跨越 4 个节点,每个进程有 8 个线程,总共使用 64 个核心。
02
数学
这一部分不是关于公式,而是关于资源计数。如果请求:
--nodes=N--ntasks-per-node=T--cpus-per-task=C
那么 SLURM 分配 N × T 个进程,每个进程可以访问 C 个 CPU 核心。使用的总核心数:N × T × C。如果作业是串行的(无 MPI、无线程),设置 T=1 和 C=1。如果使用带 16 个线程的 OpenMP,设置 C=16。
03
动手试
下面的工具构建 SLURM 脚本。移动滑块以更改节点、任务和 CPU,总核心数立即更新。生成的脚本已准备好复制和提交。
#!/bin/bash #SBATCH --nodes=1 #SBATCH --ntasks-per-node=4 #SBATCH --cpus-per-task=2 #SBATCH --time=60:00 module load python python my_script.py
- 对于一个核心的串行作业:1 个节点、1 个任务、1 个 CPU。
- 对于有 16 个线程的 OpenMP:1 个节点、1 个任务、16 个 CPU。
- 对于 4 个节点上有 32 个进程的 MPI:4 个节点、每个节点 8 个任务、每个任务 1 个 CPU。
04
我在哪用到它
05
容易出错的地方
06
参考资料
- Spartan 文档墨尔本大学 HPCSpartan 官方文档,包含作业提交、资源分配和队列信息。
- SLURM sbatch 参考SchedMD所有 SLURM sbatch 指令和选项的完整参考。
最初于 2023 年写作,2026 年重写。