【问题标题】:SLURM job script for multiple nodes多个节点的 SLURM 作业脚本
【发布时间】:2018-08-31 14:01:34
【问题描述】:

我想请求同一个集群中的两个节点,并且需要在脚本开始之前分配两个节点。

在 slurm 脚本中,我想知道是否有一种方法可以在给定节点上启动作业 A 并在第二个节点上启动作业 B,延迟时间很小或同时启动。

您对如何实现这一点有什么建议吗?这就是我的脚本现在的样子。

#!/bin/bash
#SBATCH --job-name="test"
#SBATCH -D .
#SBATCH --output=./logs_%j.out
#SBATCH --error=./logs_%j.err
#SBATCH --nodelist=nodes[19,23]
#SBATCH --time=120:30:00
#SBATCH --partition=AWESOME
#SBATCH --wait-all-nodes=1

#launched on Node 1
ifconfig > node19.txt

#Launched on Node2
ifconfig >> node23.txt

换句话说,如果我请求两个节点,我如何同时在两个节点上运行两个不同的作业?是不是我们将其部署为srun manual(多程序配置)最后一部分中给出的作业步骤。在这种情况下,“-l”没有定义。

【问题讨论】:

    标签: slurm


    【解决方案1】:

    我假设当您说作业 A 和作业 B 时,您指的是脚本中的两个回声。我还假设您向我们展示的设置正在运行,但是没有在正确的节点中启动作业并序列化执行(我感觉请求的资源不清楚,我缺少信息,但是如果 SLURM不抱怨,那么一切都很好)。您还应该注意正确编写重定向输出。如果第一个作业在第二个作业之后打开重定向,它将截断文件,您将丢失第二个作业输出。

    要在适当的节点中启动它们,请通过 srun 运行命令:

    #!/bin/bash
    #SBATCH --job-name="test"
    #SBATCH -D .
    #SBATCH --output=./logs_%j.out
    #SBATCH --error=./logs_%j.err
    #SBATCH --nodelist=nodes[19,23]
    #SBATCH --time=120:30:00
    #SBATCH --partition=AWESOME
    #SBATCH --wait-all-nodes=1
    
    #launched on Node 1
    srun --nodes=1 echo 'hello from node 1' > test.txt &
    
    #Launched on Node2
    srun --nodes=1 echo 'hello from node 2' >> test.txt &
    

    【讨论】:

    • SLURM 不会抱怨脚本。但是--nodes=1不一定指定是哪个节点吧?
    • 否,它指定该命令必须在一个节点上运行。而且你有两个保留,所以它应该可以工作。
    • 是否有办法确保来自节点 1 的 hello 始终在节点 19 上
    • 试试--nodelist。顺便说一句,您检查过文档吗? slurm.schedmd.com/srun.html
    • 我与--nodes 核对,但它不起作用。我对此的简单测试是获取每个节点的 IP 地址。是的,我确实看到了文档,这就是我构建初始脚本的方式
    【解决方案2】:

    这样就完成了!文件 ./com_19.bash 和 ./com_23.bash 充当二进制文件。

    #!/bin/bash
    #SBATCH --job-name="test"
    #SBATCH -D .
    #SBATCH --output=./logs_%j.out
    #SBATCH --error=./logs_%j.err
    #SBATCH --nodelist=nodes[19,23]
    #SBATCH --time=120:30:00
    #SBATCH --partition=AWESOME
    #SBATCH --wait-all-nodes=1
    # Launch on node 1
    srun -lN1 -n1 -r 1 ./com_19.bash &
    # launch on node 2
    srun -lN1 -r 0 ./com_23.bash &
    sleep 1
    squeue 
    squeue -s 
    wait
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 2018-01-06
      • 2020-07-31
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2018-10-07
      • 2020-09-27
      相关资源
      最近更新 更多