【发布时间】:2017-01-27 18:23:23
【问题描述】:
我有一个问题,我需要启动相同的脚本,但输入参数不同。
假设我有一个脚本myscript.py -p <par_Val> -i <num_trial>,我需要考虑N 不同的par_values(在x0 和x1 之间)和针对par_values 的每个值的M 次试验。
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 作业都在此限制内,如果它们并行但独立地一起运行,则不会发生这种情况)。
【问题讨论】: