代码之家  ›  专栏  ›  技术社区  ›  tandem

多个节点的SLURM作业脚本

  •  1
  • tandem  · 技术社区  · 6 年前

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

    你对这怎么可能有什么建议吗?这就是我现在的剧本。

    #!/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”没有定义。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Poshi    6 年前

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

    #!/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 &
    
        2
  •  1
  •   tandem    6 年前

    这就是工作!文件./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