如何为用户保留作业,以便在 slurm 中不达到总 CPU 数量?

问题描述 投票:0回答:1

我正在提交一堆数组作业,每组 4 个,每组 5 个,每个 8 个 cpu,因此总共 4x5x8=160 个 cpu。我想将运行量保持在 100>2x5x8+1x2x8 cpu 总数以下,因为我需要让其他人运行东西。我的整个研究小组允许使用 300 个 cpu,但我希望保持在 100 个以下,这样我就不会超出我的份额。如果队列中的作业运行后将超过我的 100 总 CPU(自行施加)最大值,如何阻止它们自动运行?

我的提交脚本如下,使用不同的输入参数运行 4 次:

#!/bin/bash

#SBATCH --time=13-00:00:00
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --mem-per-cpu=6000MB
#SBATCH --array=1-5

echo -e "Pwmm\tPwmw\tPmwm\tPmww\n$1\t$2\t$3\t$4" > "params_$SLURM_ARRAY_JOB_ID.txt";

mkdir Games-Surfing-Pwvw_1.0-Pwvv_-1.0-Pmvm_1.0-Pmvv_-1.0-Pvwv_0.9-Pvww_-0.9-Pvmv_0.9-Pvmm_-0.9-Pwmw_$2-Pwmm_$1-Pmwm_$3-Pmww_$4-T_20000000-K_100-M_200-Zone_175; 

/home/jmg367/JULIA/julia-1.8.0/bin/julia -t $SLURM_NTASKS $PWD/surf_probs_re_gill_games.jl $SLURM_NNODES $SLURM_NTASKS $SLURM_ARRAY_TASK_ID $SLURM_ARRAY_JOB_ID;
bash cluster-computing slurm sbatch
1个回答
0
投票

您的一种可能是提交两个作业数组,并依赖于另外两个作业数组 (

--dependency=afterany:...
),这样一次只有两个作业数组正在运行。这使得一次最多 258=80 个 CPU。

job_array_id1=$(sbatch submit.sh A B C D)
job_array_id2=$(sbatch submit.sh E F G H)
sbatch --depdendency=afterany:$job_array_id1 submit.sh I J K L
sbatch --depdendency=afterany:$job_array_id2 submit.sh M N O P
© www.soinside.com 2019 - 2024. All rights reserved.