使用SLURM运行多阶段作业

时间:2015-02-25 02:15:26

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

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

  1. 抓住N个节点,
  2. 在所有这些软件上安装软件
  3. (一旦所有节点成功完成安装),它就会创建一个 节点上的数据库实例
  4. 加载数据库
  5. (成功加载后)运行一组查询,以进行基准测试
  6. 删除数据库并返回节点
  7. 每个步骤都可以使用单独的bash脚本运行;而脚本的执行和阶段之间的转换由主节点协调。

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

    我想知道使用SLURM为这样的用例设计/运行一组脚本的正确方法是什么。任何建议或示例都将非常有用,并且非常感谢。

1 个答案:

答案 0 :(得分:2)

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

#!/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.

您需要填写空白...确保您的脚本遵循退出标准,并在出错时显示非零状态。

相关问题