【问题标题】:Running a multi-stage job using SLURM使用 SLURM 运行多阶段作业
【发布时间】:2015-02-25 02:15:25
【问题描述】:

我是 SLURM 的新手。我的问题是我有一个多阶段作业,需要在集群上运行,其作业由 SLURM 管理。具体来说,我想安排一个工作:

  1. 抓取 N 个节点,
  2. 在所有设备上安装软件
  3. (一旦所有节点成功完成安装)它会创建一个 节点上的数据库实例
  4. 加载数据库
  5. (一旦加载成功)运行一组查询,用于基准测试
  6. 删除数据库并返回节点

每个步骤都可以使用单独的 bash 脚本运行;而脚本的执行和阶段之间的转换由主节点协调。

我的问题是我知道如何使用 SLURM 分配节点并在每个节点上调用单个命令或脚本(在每个节点上作为独立作业运行)。但是,一旦每个节点上的命令完成(或调用的脚本完成),节点就会返回到空闲资源池,让分配的节点排队等待我的工作。但上述用例涉及几个阶段/脚本;并且需要他们之间的协调。

我想知道使用 SLURM 为此类用例设计/运行一组脚本的正确方法是什么。任何建议或示例都将非常有帮助,并受到高度赞赏。

【问题讨论】:

    标签: linux bash cluster-computing job-scheduling slurm


    【解决方案1】:

    您只需将所有脚本封装成一个即可提交:

    #!/bin/bash
    #SBATCH --nodes=4 --exclusive
    
    # Setting Bash to exit whenever a command exits with a non-zero status.
    set -e 
    set -o pipefail
    
    echo "Installing software on each of $SLURM_NODELIST"
    srun ./install.sh
    
    echo "Creating database instance"
    ./createDBInstance.sh $SLURM_NODELIST
    
    echo "Loading DB"
    ./loadDB.sh params
    
    echo Benchmarking
    ./benchmarks.sh params
    
    echo Done.
    

    您需要填写空白...确保您的脚本遵循以非零错误状态退出的标准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2013-11-26
      • 2020-09-27
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多