Skip to content
← 集群与云

/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
Total cores
8
1 node × 4 tasks × 2 CPUs = 8 cores for 60 minutes
SLURM 脚本生成器,带有集群拓扑的滑块。总核心数是节点、任务和 CPU 数的乘积。
  • 对于一个核心的串行作业: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 年重写。