繁体   English   中英

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

[英]How to submit a job to any [subset] of nodes from nodelist in SLURM?

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

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

sbatch --nodelist=myCluster[10-16] myScript.sh

然而,此参数使 slurm 等待提交的作业终止,从而使 3 个节点完全未使用,并且根据任务(多线程或单线程),当前活动节点在 CPU 能力方面也可能处于低负载状态.

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

你可以反过来工作; 而不是指定使用哪些节点,结果是每个作业都分配了所有 7 个节点,而是指定不使用哪些节点:

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

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

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

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

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

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

然后,要限制并行作业以获取整个节点,您可以使用--exclusive选项(但请注意分区配置优先:如果将分区配置为独占访问,则不能拥有共享节点),或使用-N 1 --tasks-per-node="number_of_cores_in_a_node" (例如-N 1 --ntasks-per-node=8 )。

请注意,后者仅在所有节点具有相同数量的内核时才有效。

任何任务都不应在多个节点上产生。

这应该由-N 1保证。

其实我认为要走的路是先建立一个'预订'。 根据此演示文稿http://slurm.schedmd.com/slurm_ug_2011/Advanced_Usage_Tutorial.pdf (最后一张幻灯片)。

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

scontrol create reservation user=alan,brenda starttime=noon duration=60 flags=daily nodecnt=10
Reservation created: alan_6

scontrol show res
ReservationName=alan_6 StartTime=2009-02-05T12:00:00
    EndTime=2009-02-05T13:00:00 Duration=60 Nodes=sun[000-003,007,010-013,017] NodeCnt=10 Features=(null) PartitionName=pdebug Flags=DAILY Licenses=(null)
    Users=alan,brenda Accounts=(null)

# submit job with:
sbatch --reservation=alan_6 myScript.sh

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM