如何用slurm逐个节点分配?


我的目标:我想启动多个代码,节点逐个节点并分配每个节点100%
epic*        up   infinite      4    alloc lio[1-2]

我得到的是:

epic*        up   infinite      4    mix lio[1-3,5]

my script:

#!/bin/bash
#SBATCH -A pt
#SBATCH -p epic
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=16
#SBATCH -J concentration
#SBATCH --array=1-4
. /usr/share/Modules/init/bash
module purge
module load openmpi-gcc/4.0.4-pmix_v2
MAXLEVEL=14
Ranf=8000
case $SLURM_ARRAY_TASK_ID in
1) phi='0.01'
;;
2) phi='0.008'
;;
3) phi='0.005'
;;
4) phi='0.001'
;;
esac
mkdir RBnf-P=$phi
cp RBnf `pwd`/RBnf-P=$phi/
cd RBnf-P=$phi
srun --mpi=pmix_v2 -J Ra${phi} ./RBnf $Ranf $MAXLEVEL $Phi

每个节点需要16个进程,每个节点有32个进程。

我有4个计算要做。

我的问题是:我怎样才能100%只分配2个节点?

因为我的脚本将使用4个节点。因此,每个节点将使用其容量的50%(4 * 16/32)。我想让我的代码仅在2个节点上运行,其容量为100%(2 * 32/32)。使用这个脚本,slurm将分配一个其他节点,而不是填充已经使用的节点。这就是为什么我有"混合"这个词;我只需要2个节点"alloc"

你有什么主意吗?

我发现了为什么不能逐个节点分配。

选项"oversubscribe"在slurm.conf文件中没有指定。这就是为什么我得到节点& mix"而不是100%分配。

https://slurm.schedmd.com/cons_res_share.html

现在我自动使用两个节点。

最新更新