我正在尝试在运行Ubuntu的Virtualbox上安装slurm。我们使用它通过web界面运行长时间运行的作业,并使用slurm对作业进行排队和运行。我正在使用VirtualBox为开发创建一个沙箱。 我已经设置了slurm,但是当我将一个作业排入队列并运行squeue时,我得到: $ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
2 debug test.sh pchandle PD 0:00
最近,我一直在尝试用Dask在一个使用SLURM调度器的HPC集群上做一些机器学习工作。重要的是,在这个集群上,SLURM被配置为每个作业24小时的硬墙时间限制。 最初,我只使用一个worker来运行代码,但是我的作业内存不足。我试图增加工作进程的数量(因此,也增加了请求节点的数量),但工作进程被困在SLURM队列中(原因是这种队列被标记为“优先级”)。与此同时,主人会跑起来,最后撞到墙上的时间,留下工人们在他们最终开始的时候死去。 考虑到问题可能是我请求了太多的SLURM作业,我尝试将工人压缩到一个单一的、多节点作业using a workaround I found on github中
我有一个shell脚本,它向SLURM提交多个作业。这些作业是在以下循环中提交的:
nb_partitions=72
slurmids=() # storage of slurm job ids
for k in $(seq 1 $nb_partitions);
do
cd results/partition$k/MainFolder
ID=$(sbatch --parsable estimation.sh)
slurmids+=($ID)
cd ..
cd ..
cd ..
done
echo "Jobs ar
我们将所有SLURM节点设置为“排出”,以便为维护窗口做准备,之后所有新作业都将保持挂起状态,直到节点恢复。不过,我们在维护窗口之前就做得很好,所以所有正在运行的作业都可以完成。这浪费了相当多的集群时间。有没有一种方法可以指定节点只接受带有--time=x参数的批处理作业,以便job start time + x小于给定的时间?例如,如果计划在周五晚上进行维护中断,则在周三使用--time=2-0到达队列顶部的作业将运行,但在周四使用--time=2-0提交的作业将不会运行。
我试图在SLURM上提交一组作业,但是睡眠命令并没有像预期的那样工作。我想每10秒启动一次工作。但是,此代码等待10秒才能启动整个作业数组。如何修改下面的bash文件?
#!/usr/bin/env bash
# The name to show in queue lists for this job:
#SBATCH -J matlab.sh
# Number of desired cpus:
#SBATCH --cpus=1
#SBATCH --mem=8gb
# The time the job will be running:
#SBATCH --time=167:00:00
#