我是SLURM的新手。我的问题是我有一个多阶段的工作,需要在集群上运行,集群的工作由SLURM管理。具体来说,我想安排一份工作:
每个步骤都可以使用单独的bash脚本运行;而脚本的执行和阶段之间的转换由主节点协调。
我的问题是我知道如何使用SLURM分配节点并在每个节点上调用单个命令或脚本(在每个节点上作为独立作业运行)。但是,只要在每个节点上完成命令(或调用脚本完成),节点就会返回到可用资源池,使分配的节点为我的作业排队。但上述用例涉及多个阶段/脚本;并需要他们之间的协调。
我想知道使用SLURM为这样的用例设计/运行一组脚本的正确方法是什么。任何建议或示例都将非常有用,并且非常感谢。
答案 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.
您需要填写空白...确保您的脚本遵循退出标准,并在出错时显示非零状态。