gpt4 book ai didi

arrays - 相同脚本但具有不同输入参数的 SLURM sbatch 作业数组并行运行

转载 作者:行者123 更新时间:2023-12-03 16:13:56 25 4
gpt4 key购买 nike

我有一个问题,我需要启动相同的脚本但输入参数不同。

假设我有一个脚本 myscript.py -p <par_Val> -i <num_trial> ,我需要考虑 N 不同的 par_values (在 x0x1 之间)和 M 试验,每个值 par_values
M 的每次试验都几乎达到了我正在处理的集群的时间限制(我没有特权来改变这一点)。所以实际上我需要运行 NxM 个独立的作业。

因为每个批处理作业具有相同的节点/cpu 配置,并且调用相同的 python 脚本,除了更改输入参数,原则上,在伪语言中,我应该有一个 sbatch 脚本,它应该执行以下操作:

#!/bin/bash
#SBATCH --job-name=cv_01
#SBATCH --output=cv_analysis_eis-%j.out
#SBATCH --error=cv_analysis_eis-%j.err
#SBATCH --partition=gpu2
#SBATCH --nodes=1
#SBATCH --cpus-per-task=4

for p1 in 0.05 0.075 0.1 0.25 0.5
do
for i in {0..150..5}
do
python myscript.py -p p1 -v i
done
done

其中脚本的每次调用本身就是一个批处理作业。
查看 sbatch doc-a --array 选项似乎很有希望。但就我而言,我需要更改我拥有的 NxM 的每个脚本的输入参数。我怎样才能做到这一点?我不想编写 NxM 批处理脚本,然后按照 this post 的建议将它们列在 txt 文件中。提出的解决方案 here 似乎也不理想,因为这是作业数组的情况。而且我想确保所有 NxM脚本同时启动,并且在调用上面的脚本之后立即终止,这样它不会与时间限制冲突,我的整个工作将被系统终止并且保持不完整(然而,由于每个 NxM 作业都在此限制内,如果它们并行但独立运行,则不会发生这种情况)。

最佳答案

最好的方法是使用作业数组。

一种选择是在提交作业脚本时传递参数 p1,因此您将只有一个脚本,但必须多次提交,每个 p1 值一次。

代码将是这样的(未经测试):

#!/bin/bash
#SBATCH --job-name=cv_01
#SBATCH --output=cv_analysis_eis-%j-%a.out
#SBATCH --error=cv_analysis_eis-%j-%a.err
#SBATCH --partition=gpu2
#SBATCH --nodes=1
#SBATCH --cpus-per-task=4
#SBATCH -a 0-150:5

python myscript.py -p $1 -v $SLURM_ARRAY_TASK_ID

你将提交它:
sbatch my_jobscript.sh 0.05
sbatch my_jobscript.sh 0.075
...

另一种方法是在 bash 数组中定义所有 p1 参数并提交 NxM 个作业(未经测试)
#!/bin/bash
#SBATCH --job-name=cv_01
#SBATCH --output=cv_analysis_eis-%j-%a.out
#SBATCH --error=cv_analysis_eis-%j-%a.err
#SBATCH --partition=gpu2
#SBATCH --nodes=1
#SBATCH --cpus-per-task=4
#Make the array NxM
#SBATCH -a 0-150

PARRAY=(0.05 0.075 0.1 0.25 0.5)

#p1 is the element of the array found with ARRAY_ID mod P_ARRAY_LENGTH
p1=${PARRAY[`expr $SLURM_ARRAY_TASK_ID % ${#PARRAY[@]}`]}
#v is the integer division of the ARRAY_ID by the lenght of
v=`expr $SLURM_ARRAY_TASK_ID / ${#PARRAY[@]}`
python myscript.py -p $p1 -v $v

关于arrays - 相同脚本但具有不同输入参数的 SLURM sbatch 作业数组并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com