gpt4 book ai didi

linux - Slurm 无法运行多个 sbatch 任务

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:13 25 4
gpt4 key购买 nike

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

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

我已确保/etc/slurm/slurm.conf 文件与机器的规范正确。这是我正在使用的 sbatch .job 文件:

#!/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 有一些我不知道的限制?

最佳答案

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

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

srun ~/anaconda3/bin/python /storage/tf_test.py

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

#!/bin/bash
#SBATCH --ntasks=2
srun --ntasks=1 something.py
srun --ntasks=1 somethingelse.py

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

关于linux - Slurm 无法运行多个 sbatch 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com