使用 SLURM
通过在命令行中指定 -batchsystem slurm
,Simcenter STAR-CCM+ 会自动将进程分发至分配给作业的所有 CPU/核心。
有关使用批处理系统提交作业的常规信息,请参见在基于 Unix 的批处理系统中工作。
有关其他必需参数或设置,另请参考特定群集文档和批处理系统文档。
用于作业提交和监视的有用命令
显示 SLURM 版本
$ sinfo -V
slurm 20.02.6
提交作业
Slurm 作业使用 sbatch
或 salloc/srun
命令提交。建议使用 sbatch
选项,因为随着提交选项变得更复杂,srun
命令会存在提交问题。
$ sbatch <submission options> <job_script>
$ sbatch <submission options> <command>
显示作业状态
# show all queued jobs
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
129089 normal TEST02 tester PD 0:00 2 (Resources)
128807 normal TEST01 tester R 3-03:13:11 4 node[069-072]
# show a specific job by jobid
$ squeue -j 128807
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
128807 normal TEST01 tester R 3-03:13:11 4 node[069-072]
终止作业
$ scancel <jobid>
作业提交
启动 Simcenter STAR-CCM+ 的最低示例作业脚本,并自动提取有关已分配资源的信息:
#!/bin/bash
#SBATCH --job-name=starsim
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=40
#SBATCH --time=1:00:00
echo "Running job $SLURM_JOB_NAME in the work directory: $SLURM_SUBMIT_DIR"
STAR_PATH=/path/to/star/bin
$STAR_PATH/starccm+ -bs slurm -batch step my.sim
这会将名为 starsim
的作业分配给两个节点,每个节点处理 40 个进程一小时。标准和错误输出将重定向到名为 "slurm-<jobid>.out
" 的单个文件。
作业文件提交前缀
批处理脚本可能包含前面带有 #SBATCH
的选项,这些选项位于脚本中的任何可执行命令之前。一旦脚本中达到第一个非注释非空格行,sbatch
将停止处理 #SBATCH
指令。
提交选项
这些参数可以在提交命令中使用,也可以在前面添加提交前缀与提交命令文件一起使用。
参数 | 描述 |
---|---|
--job-name=<job_name> | 赋予作业的名称 |
--nodes=<#nodes> | 已分配给作业的节点(计算机)数量 |
--ntasks-per-node=<#tasks> | 为每个节点分配的核心/进程数 |
--time=<hh:mm:ss> | 作业的最大 walltime |
--partition=<partition_name> | 作业将在其中运行的分区(队列名称) |
--output=<output_filename> | 标准输出日志文件 |
--error=<error_filename> | 错误输出日志文件 |
首选 tasks-per-node 而不是 ntask
使用 --ntasks-per-node
而不是 -ntasks
,以避免在更改节点数时更改值。
提交环境变量
运行作业时有多个环境变量处于活动状态。这些变量前面带有 'SLURM_
'。这是一些更有用变量的列表。
环境变量 | 描述 |
---|---|
SLURM_JOBID | 作业 ID |
SLURM_JOB_ID | 作业 ID |
SLURM_JOB_NAME | 分配给作业的名称 |
SLURM_JOB_NODELIST | 参与作业的节点的列表。请参见节点列表 |
SLURM_NNODES | 参与作业的节点数 |
SLURM_NPROCS | 并行进程数 |
SLURM_NTASKS | 并行任务数 |
SLURM_NTASKS_PER_NODE | 提交资源分配的每个节点任务(核心)数 - ntasks-per-node 选项 |
SLURM_SUBMIT_DIR | 作业的 CWD |
SLURM 环境变量传播要求
默认情况下,SLURM 将所有环境变量传播到启动的应用程序(类似于 sbatch --export=ALL
)。如果更改默认行为,运行 Simcenter STAR-CCM+ 可能会出现问题。在这种情况下,可恢复默认 SLURM 设置,或注意通过其他方式将所有必需的环境变量传播到启动的应用程序。