DPDispatcher专题

DPDispatcher Slurm提交与结果取回

在实际集群资源中提交三个小任务,认识group_size与并行度、文件目录及不中断计算的控制端恢复。

更新于 2026-11-06约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载DPDispatcher任务配置与恢复实例包。本包是实际任务工作流,不是只画已有数据的离线脚本:完整运行会执行3个本地CPU小任务,并通过Slurm在P100和V100资源上各运行3个GPU小任务,另有1次受控失败后的重试。

unzip dpdispatcher-config-slurm-recovery-wave252.zip -d dispatcher-practice
cd dispatcher-practice
bash run.sh

请在自己的普通账号与工作目录运行,并确认对应计算资源可用。脚本使用dpgen/0.14.0环境中的DPDispatcher1.1.0,以及LAMMPS30Sep2026;每个调度任务请求1个CPU和1张相应GPU,本地CPU小例使用单线程。计算节点始终由Slurm分配,脚本不会SSH进入计算节点。

CPU版LAMMPS使用Intel oneAPI2024.2/Intel MPI2021.13;GPU版使用GCC13.3/OpenMPI5.0.10/CUDA12.8,为GPU包mixed精度。绘图使用ase/3.29.0环境。脚本自动填写当前账号,不需要修改公共Python或环境模块。

完整流程生成shell/、p100/、v100/、analysis/和figures/。已有输出目录不作为新的练习目录反复运行;需要从头练习时重新解压,已有任务则沿原目录恢复。

1 只练习P100提交#

以下手动练习使用新的解压目录,不要接着在已完成bash run.sh的目录里重新开始。

module load dpgen/0.14.0
python worker.py p100-start
squeue -u "$USER"

p100-start提交后返回控制端,GPU作业继续由Slurm管理。这不是取消,也不意味着所有任务已经完成。返回的报告列出本次作业ID,随后可继续:

python worker.py p100-resume
cat p100/p100-start-REPORT.json
cat p100/p100-resume-REPORT.json

实际例子恢复时继续使用原3个作业ID,没有因为控制程序再次启动就重交3份计算。如果任务已经在两条命令之间完成,恢复过程会检查完成状态并取回结果。

2 机器类型和上下文各管什么#

cat p100/machine.json

这里batch_type是Slurm,context_type是LocalContext。控制程序在集群登录环境运行,再把任务放入指定执行目录并交给Slurm;LocalContext不表示科学任务必须直接在控制程序所在的主机运行。

local_root与remote_root由脚本根据当前目录填写。前者保存客户端输入和取回结果,后者保存提交所用目录。虽然名字叫remote,在LocalContext下它们可位于同一文件系统。

SSHContext用于控制端需要通过SSH联系提交端的情况,涉及相应账号和连接配置。本教程实际使用LocalContext与本集群Slurm;PBS、LSF或云后端必须有对应的真实服务和访问条件,不能只改一个名称就获得该调度系统。

3 每个任务申请多少资源#

cat p100/resources.json
cat p100/tasks.json

主要设置:

{
  "number_node": 1,
  "cpu_per_node": 1,
  "gpu_per_node": 1,
  "queue_name": "gpu-8p100-hs",
  "group_size": 1,
  "para_deg": 1
}

group_size=1让一个调度作业装一个Task;3个Task对应3个Slurm作业。para_deg=1控制同一个作业内部的任务并行度,不表示整个Submission只会提交1个作业。

本例另在custom_flags指定目标节点、排除节点、5分钟时限和2G内存,并使用匹配GPU类型的GRES行。每次真正提交,包括自动重试前,脚本都会重新读取受排除队列的成员;若成员发生变化,先核对资源配置再提交。不要删除这些资源约束后把脚本当成任意节点启动器。

4 查看输入和取回结果#

ls p100/local/task-0
cat p100/local/task-0/result.json
cat p100/local/task-0/attempts.jsonl
ls p100/remote

本例取回5类文件:整理结果、原生日志、坐标与力、能量表和执行次数记录。执行目录下的长字符串是提交标识,不是材料名称;不要据它的长短判断任务数量。

clean=False用于保留提交工作目录,便于查看脚本和其他未取回文件。当前LocalContext的结果取回是移动操作:指定输出到本地后,原执行目录可能已不再保存该输出。它不自动形成两份结果备份。

5 重复练习与正式工作#

完整从头运行使用新的解压目录;处理中断的已有任务使用原目录与恢复命令。不要通过清空完成标签或更换输入路径来“刷新进度”,那样可能变成一份新提交。

实际生产任务的CPU数、GPU数、MPI命令、模块和科学程序要相互匹配。本例只是1CPU/1GPU单点,不是多卡并行或大模型资源建议。资源含义见DPDispatcher Resources参数,作业状态和Slurm基础见集群作业管理。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗