【发布时间】:2019-06-08 21:06:54
【问题描述】:
我很难理解如何使用 SLURM 在同一个节点中运行多个进程。
假设我想运行一个包含 100 个不同输入参数的程序。例如,我会在笔记本电脑上执行以下操作:
for i in `seq 100`; do
./program ${i}
done
现在我可以访问具有 24 核节点的集群。所以,我想同时在 5 个节点上运行 24 个程序实例(4 个节点上 24 个 + 第 5 个节点上 4 个)。
我认为提交脚本应该是这样的:
#!/bin/bash
#SBATCH -N 5
#SBATCH -n 100
#SBATCH --ntasks-per-node=24
for i in `seq 100`; do
srun ./program ${i} &
done
wait
事实证明,使用这个提交脚本,./program 会针对每个 i 值运行多次,即使 srun 在每个循环中只调用一次。
发生了什么事?这样做的正确方法是什么?
【问题讨论】:
标签: slurm