【问题标题】:SLURM How to start a script once per nodeSLURM 如何为每个节点启动一次脚本
【发布时间】:2021-07-23 20:07:38
【问题描述】:

我有一个可通过 SLURM 获得的大集群。 我想开始我的脚本,例如./calc 在每个具有指定核心数量的请求节点上。例如,在 2 个节点上,每个节点 16 个核心。

我从sbatch 脚本开始

#SBATCH -N 2
#SBATCH --ntasks-per-node=16

srun -N 1 ./calc 2 &
srun -N 1 ./clac 2 &
wait

但它并没有按预期工作。 我尝试了--ntask --nodes --cpus-per-task 的许多配置,但没有任何效果,我很迷茫。

我也不明白 SLURM 中任务和 CPU 之间的区别

【问题讨论】:

    标签: cluster-computing slurm


    【解决方案1】:

    在您的示例中,您要求 slurm 在 2 个节点上为每个节点启动 16 个任务。在作业结束时,slurm 可能会运行 8x(srun)x2 个节点任务。

    根据您的需要,您无需专门指定需要 2 个节点,而不是作业必须在 2 个两个不同的节点上运行。 对于您的示例,运行以下 sbatch :

    #!/bin/bash
    #SBATCH --ntasks=2
    #SBATCH --cpus-per-task=16
    #SBATCH --hint=nomultithread
    
    srun <my program>
    

    在这个例子中,slurm 将运行 2 次 16 核的程序。 nomultithread 是可选的,取决于集群配置。如果超线程被激活,这将是 16 个虚拟 CPU。

    【讨论】:

      【解决方案2】:

      我发现这是一个可行的解决方案。原来最重要的是定义所有参数nodestaskscpus

      #!/bin/bash
      
      #SBATCH -N 2
      #SBATCH --ntasks-per-node=1
      #SBATCH --cpus-per-task=16
      
      srun -N 1 -n 1 -c 16 ./calc 2 &
      srun -N 1 -n 1 -c 16 ./calc 2 &
      wait
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-07
        • 1970-01-01
        • 2022-11-27
        • 2019-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多