如何使用 slurm 逐个节点分配?
How to allocate node by node with slurm?
我的目标:
我想启动多个代码,逐个节点并为每个节点分配 100%
epic* up infinite 4 alloc lio[1-2]
我得到的是:
epic* up infinite 4 mix lio[1-3,5]
我的脚本:
#!/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 个节点“分配”。
你有什么想法吗?
我找到为什么不能逐个节点分配了。
未指定 slurm.conf 文件中的“过度订阅”选项。
这就是为什么我得到节点“混合”而不是 100% 分配的原因。
https://slurm.schedmd.com/cons_res_share.html
现在我自动使用两个节点。
我的目标: 我想启动多个代码,逐个节点并为每个节点分配 100%
epic* up infinite 4 alloc lio[1-2]
我得到的是:
epic* up infinite 4 mix lio[1-3,5]
我的脚本:
#!/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 个节点“分配”。
你有什么想法吗?
我找到为什么不能逐个节点分配了。
未指定 slurm.conf 文件中的“过度订阅”选项。 这就是为什么我得到节点“混合”而不是 100% 分配的原因。
https://slurm.schedmd.com/cons_res_share.html
现在我自动使用两个节点。