You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pyiron中实现带依赖的远程SLURM集群多作业调度?

pyiron实现SLURM作业依赖调度的方案

pyiron原生支持跨作业依赖调度,无需常驻Jupyter进程,所有依赖逻辑会自动转化为SLURM原生的作业依赖规则,由集群SLURM服务端统一维护,具体操作步骤如下:

  1. 首先预先定义4个作业的计算逻辑、SLURM提交参数(队列、核心数、最大运行时长等),无需立即提交
# 示例代码,根据你的实际作业类型调整
from pyiron_atomistics import Project
pr = Project("your_workflow_dir")

# 定义作业A
jobA = pr.create.job.SomeJobType("job_a")
jobA.server.queue = "your_slurm_queue"
jobA.server.cores = 16
jobA.server.run_time = 3600*24*3 # 按实际运行时长设置
# 配置作业A的输入参数
jobA.input.xxx = xxx

# 同理定义作业B、C、D
jobB = pr.create.job.SomeJobType("job_b")
jobB.server.queue = "your_slurm_queue"
# ... 配置B的输入、服务器参数

jobC = pr.create.job.SomeJobType("job_c")
# ... 配置C的参数

jobD = pr.create.job.SomeJobType("job_d")
# ... 配置D的参数

# 如果需要前序作业的输出作为输入,直接关联即可
jobB.input.structure = jobA.output.structure
jobC.input.parameters = jobA.output.parameters
jobD.input.result_b = jobB.output.result
jobD.input.result_c = jobC.output.result
  1. 设置作业依赖规则
# 作业B、C仅在作业A运行完成后触发
jobB.run_if(jobA, "finished")
jobC.run_if(jobA, "finished")
# 作业D仅在作业B、C都运行完成后触发
jobD.run_if([jobB, jobC], "all_finished")
  1. 手动启动作业A,之后即可关闭Jupyter
jobA.run()

补充说明

  • 所有依赖规则会被pyiron自动转换为SLURM的--dependency提交参数,调度逻辑完全由集群SLURM服务托管,不需要本地环境保持在线
  • 作业间的输入输出关联会被pyiron自动持久化存储,不会因为Jupyter关闭失效

内容的提问来源于stack exchange,提问作者fufl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:45:03