slurm跑python_通过python与slurm交互(自动链接作业)

我需要在slurm上运行10000个作业(假设每个作业需要30分钟)。目前,计划是用一个作业阵列,并行使用250个核心,如下所示:sbatch --array=0-10000%250 array_script.sh args

不幸的是,系统管理员没有更改slurm的MaxArraySize(从默认的1001)。为了“避开”这个问题,我计划将整个工作分成10个部分,并以某种方式安排每一个部分,以便在前一个部分完成后运行。例如,我会从以下几点开始:

^{pr2}$

当这一切完成后,我会:sbatch --array=1000-1999%250 array_script.sh args

现在我需要安排时间。我对bash没有那么丰富的经验,我有一个python包装器,所以我想我应该用python来做(另外,我在作业数组周围使用python包装器来做很多其他事情)。那我平时怎么做呢?在

目前我有:for i in range(num_slices):

command = 'sbatch --array={lower_end}-{upper_end}%250 array_script.sh args'.format(lower_end=i*1000, upper_end=min((i+1)*1000-1, num_targets-1), args=args)

subprocess.run(command, shell=True)

<< need to have a step that waits till the job is done >>

首先,在上面,我用subprocess.run运行sbatch,这意味着我目前不知道{}。有没有一种方法可以捕捉subprocess.run的输出,或者有什么方法可以让我找到JOB_ID。我如何做等效于squeue来检查作业是否仍在运行并决定是否继续循环?在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值