srun
# srun 命令
知道了可用的计算资源后,第二步就可以直接提交作业了,例如使用 srun
命令,配合 -p 分区名
参数,以及 -N 节点数 -n 核心数
进行提交,下面详述如下:
在命令行终端直接执行 srun
命令进行作业提交计算,天河系统的相应命令是 yhrun
。
本文以 yhrun
命令为例进行介绍。
$ yhrun -N 2 -n 24 -p debug executable [args...]
1
命令说明:
关键词 | 含义 | 备注 |
---|---|---|
yhrun | 并行执行程序的命令 | 类似于通用的mpirun 命令 |
-N | 总节点数 | -N 2 表示用2个计算节点 |
-n | 总核数 | -n 24 表示一共用 24 个cpu核心,注意是总数,而不是每个节点的核数 |
-p | 计算分区 | -p debug 表示用debug计算分区,可以用yhi 命令查询可用分区 |
executable | 可执行程序名称 | 就是你要运行的程序的名字 |
[args...] | 执行参数 | 有的程序需要加参数,就写在后面 |
# 疑问:-N -n 如何使用?
1、 -N 是总节点数, -n 是总 CPU 核数。超算中心的计算资源是有一个个计算节点组成的,由于通常超算中心提供的是物理资源,因此每一个计算节点的配置相对是固定的。也就是说,一个计算节点,有多少个物理 CPU 核心、多少内存,是有比例的。我们可以使用 [[熟悉系统]] 相关章节进行查询
2、当只使用了 -N 参数,例如 yhrun -N 2 -p debug ...
,Slurm 作业调度系统会申请 2个计算节点,每个计算节点默认(最少)使用一个 CPU 核心,因此实际效果和 yhrun -N 2 -n 2 -p debug ...
是一样的。
3、当只是用了 -n 参数,则会优先使用节点内的 CPU核心数,当一个节点 CPU核心数资源不够时,会增加一个节点,还不够继续增加。类似于 -n 指定的核心数,会除以每个节点的核心数(固定了,写在了 slurm 配置文件中)。能整除时刚到用结果值当做 -N 的节点数值;不能整除时,会增加一个节点。
4、当同时使用了 -N 和 -n 参数时,又分 2种情况:
(1)如果 -N 节点数 X 每个节点的核心数 >= -n 总CPU核数,则会正常运行
(2)否则,会提示类似 Requested node configuration is not available
,因为无法提供同时满足这两个数的计算资源
# 特别注意
yhrun
运行的程序,默认会将输出显示到屏幕上,而且当前终端断掉会导致任务退出,因此推荐用yhbatch
命令提交任务。