我有一个问题,我需要启动相同的脚本但输入参数不同。
假设我有一个脚本myscript.py -p <par_Val> -i <num_trial>
,我需要为每个. N
par_values
x0
x1
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
批处理脚本,然后按照本文txt
的建议将它们列在文件中。这里提出的解决方案似乎也不理想,因为这是工作数组的情况。此外,我想确保所有脚本同时启动,并立即终止上述脚本的调用,以免与时间限制冲突,我的整个工作将被系统终止并仍然不完整(然而,因为每个NxM
NxM
作业在此限制内,如果它们并行但独立运行,则不会发生)。