作业脚本选项

日志 log 输出控制

作业脚本的标准输出和标准错误默认保存到同一个日志文件,名为

slurm-%j.out        # `%j` 是作业编号

要改变标准输出,在作业脚本里加入

#SBATCH --output=filename_pattern

要改变标准错误,在作业脚本里加入

#SBATCH --error=filename_pattern

filename_pattern 是模式化的文件名,例如 slurm-%A_%a.out slurm-%A_%a.error

--account

付费账号关联,用户使用收费分区时,需要关联付费账号,在作业脚本里加入

#SBATCH --account=supervisor

请将 supervisor 替换为导师的账号名

--cpus-per-task

单个 task 需要的 cpu 核数。一个 task 进程可以多线程,需要使用多个 cpu 核。此选项 Slurm 系统会保证一个 task 进程所在的计算节点上有指定数量的 cpu 核可用。

例如,每个计算节点有 4 个 cpu 核,一个计算作业需要 24 个 cpu 核

  • 直接声明 24 个 task,Slurm 系统将分配 6 个计算节点
  • 指定 --cpus-per-task=3,Slurm 系统将分配 8 个计算节点,确保一个 task 需要的 3 个 cpu 核是在同一个节点上

如果不设置此选项,Slurm 系统默认值是 1,即默认一个 task 分配一个 cpu 核

--gres

申请每计算节点上 GPU 资源的数量,在作业脚本里加入

#SBATCH --gres=gpu:X

其中 X 是数量,目前 gpu 分区每计算节点有 4 张 Nvidia Tesla V100,因此 X 不超过 4

--job-name

指定作业的名字,在作业脚本里加入

#SBATCH --job-name=jobname

jobname 是用户自定义的作业名,将显示在 squeue 查询信息里。如果不设置此选项,默认显示作业脚本的名字

--clusters

指定要在哪个集群上运行,knl 分区运行需要设置此选项,某些独占节点也需要,请按照管理员提供的名字做设置,在作业脚本里加入

#SBATCH --clusters=knl

--nodes

申请计算节点的数量,在作业脚本里加入

#SBATCH --nodes=X

其中 X 是数量,需要的计算节点的个数

--ntasks

指定要运行的 task 数量,在作业脚本里加入

#SBATCH --ntasks=X

其中 X 是数量。sbatch 不启动 task,只向 Slurm 系统申请需要的 cpu 核数,默认一个 task 申请一个 cpu 核,如果设置了 --cpus-per-task 选项,则会改变此默认数量

--ntasks-per-node

控制每个计算节点上运行 task 的数量,一般与 --nodes 配合使用,例如

MPI 程序需要 3 个计算节点,每节点 4 个进程,一共 12 个 task,对应 12 个 cpu 核

#SBATCH --nodes=3
#SBATCH --ntasks-per-node=4

还可以与 --cpus-per-task 选项配合使用,例如

MPI 程序需要 3 个计算节点,每节点 2 个进程,每个进程使用 OpenMP 运行 8 个线程,一共 48 个 cpu 核

#SBATCH --nodes=3
#SBATCH --ntasks-per-node=2
#SBATCH --cpus-per-task=8

--partition

超算上不同类型的计算资源,以资源分区的形式组织,指定使用哪个分区,在作业脚本里加入,例如申请在 hpxg 分区计算

#SBATCH --partition=hpxg

--nodelist

指定要运行的计算节点名,节点名之间用逗号分隔,例如

指定使用 n0050 n0051 n0052 n0053 n0180

#SBATCH --nodelist=n[0050-0053],n0180

--exclude

排除特定的计算节点,例如

分配资源的时候不要分配计算节点 n0050 n0051 n0052 n0053 n0180

#SBATCH --exclude=n[0050-0053],n0180

--exclusive

运行本任务的时候不与其它任务共享所分配的节点资源,Slurm 系统需要等待有满足任务要求并完全空闲的节点出现才会分配资源,并保证所分配的节点上没有其它任务运行,同时所分配节点上的所有 CPU 和 GPU 都将计费,无论本任务是否申请了这些资源,例如在 gpu 分区申请 1 核 1 卡且使用了 --exclusive 选项,将按照使用 20 核 4 卡的标准计费

#SBATCH --exclusive

作业脚本里可使用的环境变量

以下环境变量名在引用的时候需要加 $ 符号,更多请查询 OUTPUT ENVIRONMENT VARIABLES

SLURM_CPUS_PER_TASK

如果设置了选项 --cpus-per-task

SLURM_JOB_NODELIST

分配给作业的计算节点列表

SLURM_NTASKS

如果设置了选项 --ntasks,或由选项 --nodes--ntasks-per-node以及--cpus-per-task共同决定

SLURM_NTASKS_PER_NODE

如果设置了选项 --ntasks-per-node

SLURM_SUBMIT_DIR

运行 sbatch 时所在的目录

查询计算节点和分区状态

运行以下命令查看计算节点的状态信息

sinfo

其中 STATE 常见的有

  • alloc,节点已经被分配给作业任务
  • down,节点当前不可用
  • drain,节点被管理员设置为退出服务
  • idle,节点当前空闲
  • mix,节点有部分计算资源已被分配,还有部分资源空闲可用

results matching ""

    No results matching ""