SLURM是否每个节点提交多个任务? [英] SLURM Submit multiple tasks per node?
问题描述
我发现了一些非常相似的问题,这些问题帮助我得出了一个似乎有效的脚本,但是我仍然不确定我是否完全理解为什么,因此这个问题.
我的问题(示例):在3个节点上,我想在每个节点上运行12个任务(所以总共有36个任务).另外,每个任务都使用OpenMP,并且应使用2个CPU.在我的情况下,一个节点具有24个CPU和64GB内存.我的脚本是:
#SBATCH --nodes=3
#SBATCH --ntasks=36
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=2000
export OMP_NUM_THREADS=2
for i in {1..36}; do
srun -N 1 -n 1 ./program input${i} >& out${i} &
done
wait
这似乎按我的要求工作,依次在一个节点上运行任务,直到该节点上的所有CPU被使用,然后继续在下一个节点上运行其他任务,直到再次使用所有CPU,依此类推. >
我的问题..我不确定这是否是它真正的功能(?),因为我不完全了解srun关于-n的手册页,并且我以前没有使用过srun. 我的困惑主要来自"-n":在-n的手册页中,它说默认为每个节点一个任务,..",因此我希望如果我使用"srun -n 1",则只会有一个任务在每个节点上运行,似乎并非如此. 此外,当我尝试例如"srun -n 2 ./program"似乎只是在两个相同的任务上运行完全相同的程序两次,而无法使用不同的输入文件..我想不出为什么这会有用吗?
您的设置正确,除了必须使用srun的--exclusive
选项(在这种情况下,其含义与sbatch
的含义不同).
关于您对 Your setup is correct except that you must use the As for your remark regarding the usefulness of 这篇关于SLURM是否每个节点提交多个任务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!srun
有用性的评论,可以根据环境变量$SLURM_TASK_ID
或MPI程序的等级来更改程序的行为.造成混淆的原因是,您的程序不是以并行方式编写的(来自2个OMP线程),而srun
是为了启动并行程序而创建的,大多数情况下都是基于--exclusive
option of srun (which has a different meaning in this case than for sbatch
). srun
, the behaviour of the program can be changed based on the environment variable $SLURM_TASK_ID
, or the rank in case of an MPI program. Your confusion arises from the fact that your program is not written to be parallel (appart from the 2 OMP threads) while srun
is meant to start parallel programs, most of the time based on MPI.