在sbatch中使用--array和--nodelist

时间:2014-09-03 20:12:33

标签: matlab slurm

由于Matlab将如何利用计算集群上的资源,我想创建多个作业,每个作业都使用给定节点上的所有核心。我可以将--array选项与其他参数结合使用,以确保我在单独的节点上获得每个作业。但是,出于某种原因,我们集群上的slurm计划将我的工作放在已经在使用的节点上,即使我尝试使用-c选项在给定节点上最大化核心:

#SBATCH --array=1-2
#SBATCH -t 24:00:00
#SBATCH -n 1
#SBATCH -c 20
#SBATCH -N 1
#SBATCH --exclusive
#SBATCH --mem-per-cpu 4000

module add ~/matlab/2014a

srun matlab -nodisplay -r "myfun($SLURM_ARRAY_TASK_ID);quit"

使用--exclusive选项似乎不会改变任何东西。我的单个任务也遇到了同样的问题,我的解决方法是检查哪些节点没有使用,并使用--nodelist选项专门请求。有没有办法将--array与--nodelist结合使用,以便列表中的每个作业和节点以一对一的方式进行匹配?现在,SLURM正在尝试为每个作业使用所有节点。

1 个答案:

答案 0 :(得分:1)

三种可能性:

  1. 要么节点在Slurm控制之外运行ghost作业,要么是因为先前作业无效,要么是因为其他用户使用了不公平的集群。由于Slurm在分配节点之前没有检查节点的负载,因此您可以面对您所描述的情况。

  2. 或者,Shared的{​​{1}}参数可以设置为slurm.conf - exclusive`并且可以启用超线程,导致Slurm认为每个节点有40个cpus

  3. 或者Force' to deny you the use of的{​​{1}}参数可以设置为除Shared以外的其他参数,而节点位于两个不同的分区中,这种配置会导致节点超额预订

  4. 使用slurm.conf命令获取有关配置的更多信息。