Cluster computing 如何从SLURM中的节点列表将作业提交到任何[子集]节点?

Cluster computing 如何从SLURM中的节点列表将作业提交到任何[子集]节点?,cluster-computing,batch-processing,slurm,sbatch,Cluster Computing,Batch Processing,Slurm,Sbatch,我有几千个作业要在一个有16个节点的SLURM集群上运行。这些作业应仅在大小为7的可用节点子集上运行。一些任务是并行的,因此使用单个节点的所有CPU能力,而其他任务是单线程的。因此,多个作业应在单个节点上同时运行。所有任务都不应在多个节点上生成 目前,我提交的每个作业如下: sbatch --nodelist=myCluster[10-16] myScript.sh 但是,此参数使slurm等待提交的作业终止,因此留下3个完全未使用的节点,并且根据多线程或单线程任务的不同,当前活动节点可能在C

我有几千个作业要在一个有16个节点的SLURM集群上运行。这些作业应仅在大小为7的可用节点子集上运行。一些任务是并行的,因此使用单个节点的所有CPU能力,而其他任务是单线程的。因此,多个作业应在单个节点上同时运行。所有任务都不应在多个节点上生成

目前,我提交的每个作业如下:

sbatch --nodelist=myCluster[10-16] myScript.sh
但是,此参数使slurm等待提交的作业终止,因此留下3个完全未使用的节点,并且根据多线程或单线程任务的不同,当前活动节点可能在CPU能力方面处于低负载状态

强制slurm在指定节点上同时运行多个作业的sbatch的最佳参数是什么

一些任务是并行的,因此使用单个节点的所有CPU能力,而其他任务是单线程的

我知道您希望单线程作业共享一个节点,而并行作业应该独占分配整个节点

多个作业应在单个节点上同时运行

就我对SLURM的理解而言,这意味着您必须将CPU内核定义为可消耗资源,即SLURM.conf中的SelectType=select/cons_res和SelectTypeParameters=CR_Core

然后,要约束并行作业以获得整个节点,您可以使用选项,但请注意分区配置优先:如果分区配置为独占访问,则您不能拥有共享节点,或者使用-n1-每个节点的任务数=每个节点中的内核数,例如-n1-每个节点的任务数=8

请注意,只有当所有节点都具有相同数量的核心时,后者才起作用

所有任务都不应在多个节点上生成


这应该由-n1来保证。

事实上,我认为应该首先建立一个“预订”。根据上一张幻灯片的演示

场景:在默认SLURM分区中保留十个节点,从中午开始,每天持续60分钟。该预订仅适用于用户alan和brenda


不幸的是,我无法测试这个过程,可能是因为缺乏特权。

你可以用另一种方法来测试;指定不使用的节点,而不是指定要使用的节点,其效果是将所有7个节点分配给每个作业:

sbatch --exclude=myCluster[01-09] myScript.sh

Slurm永远不会为您的作业分配超过7个节点。请确保群集配置允许节点共享,并且您的myScript.sh包含SBATCH-ntasks=1-cpu per task=n,每个作业的线程数为n。

至关重要的是,我的所有作业总共使用的节点不超过7个。我们集群的每个节点都有20个核心,每个核心有2个线程。如果我理解正确,您建议提交并行作业,sbatch-nodelist=myCluster[10-16]-ntasks per node=40-N 1 myScript.sh。为什么不-ntasks per node=1,以确保单个节点上同时运行的作业不超过一个?那么单线程作业呢?@Faber如果你想将一组作业限制为最多使用7个节点,那么分区或QoS设置就是最好的选择。保留将阻止任何其他用户在同一组节点上运行,这就是为什么需要管理员来创建它。这是你真正想要的吗?为您的独占访问保留节点?这是我们在少数用户中达成的一致意见。如果我们可以设置最大持续时间,为什么不呢?或者这种方法是群集使用的完全反模式吗?是否可以授予普通用户设置预订的权限?假设您不是管理员。否则,限制和关联就是解决办法。对于“关联”,你是指SLURM词汇表中的“保留”吗?不,我是指SLURM在帐户、服务质量、分区等上下文中使用的术语来设置限制。我在语法=myCluster[01-09]方面遇到了问题:在这种情况下,哪些是不同的节点名称?-exclude=myCluster[01-09]相当于-exclude=myCluster01、myCluster02、myCluster03、myCluster04、myCluster05、myCluster07、myCluster08、myCluster09、myCluster10、,。
sbatch --exclude=myCluster[01-09] myScript.sh