首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Slurm不能运行多个sbatch任务

Slurm不能运行多个sbatch任务
EN

Stack Overflow用户
提问于 2019-02-14 08:59:09
回答 3查看 1.4K关注 0票数 0

我已经在2节点集群上安装了Slurm。两个节点都是计算节点,其中一个也是控制器。我能够一次成功地运行多个作业的srun。我正在运行GPU作业,并已确认可以使用srun在多个GPU上运行多个作业,最多可达系统中的GPU数量。

但是,当我尝试使用相同的测试文件运行sbatch时,它将只运行一个批处理作业,并且只在同时也是控制器的计算节点上运行。其他失败,sacct摘要中的ExitCode为1:0。如果我尝试强制它在不是控制器的计算节点上运行,它将不会运行,并显示1:0退出代码。但是,只需使用srun就可以在任何计算节点上运行。

我已经确保/etc/slurm/slurm.conf文件与机器的规格相符。下面是我使用的sbatch .job文件:

代码语言:javascript
复制
#!/bin/bash
#SBATCH --job-name=tf_test1
#SBATCH --output=/storage/test.out
#SBATCH --error=/storage/test.err
#SBATCH --ntasks=2
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=2000
##SBATCH --mem=10gb
#SBATCH --gres=gpu:1
~/anaconda3/bin/python /storage/tf_test.py

也许sbatch有一些我不知道的限制?

EN

回答 3

Stack Overflow用户

发布于 2019-02-24 13:44:57

sbatch创建一个作业分配并启动所谓的“批处理步骤”。如果你不熟悉什么是作业步骤,我推荐这个页面:https://slurm.schedmd.com/quickstart.html

批处理步骤运行从sbatch传递给它的脚本。启动其他作业步骤的唯一方法是在批处理步骤中调用srun。在你的情况下,它将是

代码语言:javascript
复制
srun ~/anaconda3/bin/python /storage/tf_test.py

这将创建一个作业步骤,在分配中的每个任务上运行tf_test.py。请注意,虽然该命令与您直接运行srun时相同,但它通过来自sbatch的环境变量来检测分配中的内容。您可以使用-n[num tasks]之类的标志运行srun,从而将分配拆分为多个作业步骤。即

代码语言:javascript
复制
#!/bin/bash
#SBATCH --ntasks=2
srun --ntasks=1 something.py
srun --ntasks=1 somethingelse.py

我不知道您是否有任何其他问题,因为您没有发布任何其他错误消息或日志。

票数 1
EN

Stack Overflow用户

发布于 2019-03-29 20:15:24

如果在第二个节点上使用srun有效,并且在没有写入任何输出的情况下将sbatch与您提到的提交脚本一起使用失败,最可能的原因是/storage在第二个节点上不存在,或者用户不能写入。

第二个节点上的slurmd日志应该明确说明这一点。默认位置是/var/log/slurm/slurmd.log,但请查看scontrol show config| grep Log的输出以获得明确的信息。

导致相同行为的另一个可能原因是用户未定义或在第二个节点上具有不同的UID (但随后srun也会失败)

票数 1
EN

Stack Overflow用户

发布于 2019-08-14 06:03:04

@damienfrancois的答案最接近,甚至可能是正确的。在确保所有节点上的/storage位置可用后,使用sbatch运行程序。最大的问题是/storage位置是通过NFS共享的,但对于计算节点是只读的。必须在/etc/exports中对其进行更改,使其看起来更像:

/storage *(rw,sync,no_root_squash)

在那之前...

我的工作文件也有一点不同。下面是当前的.job文件:

代码语言:javascript
复制
#!/bin/bash
#SBATCH -N 1      # nodes requested
#SBATCH --job-name=test
#SBATCH --output=/storage/test.out
#SBATCH --error=/storage/test.err
#SBATCH --time=2-00:00
#SBATCH --mem=36000
#SBATCH --qos=normal
#SBATCH --mail-type=ALL
#SBATCH --mail-user=$USER@nothing.com
#SBATCH --gres=gpu
srun ~/anaconda3/bin/python /storage/tf_test.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54681721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档