我必须为大约10000个对象运行一系列python脚本。在我的目录中,每一个对象都有一行参数。 在我的计算机上,为了测试脚本,我只需使用一个bash文件,如:
totrow=`wc -l < catalogue.txt`
for (( i =1; i <= ${totrow}; i++ )); do
arg1=$(awk 'NR=='${i}' ' catalogue.txt)
arg2=$(awk 'NR=='${i}'' catalogue.txt)
arg3=$(awk 'NR=='${i}'' catalogue.txt)
python3 script1.py ${arg1} ${arg2} ${arg3}
done
为目录的每一行运行脚本。 现在我想在一台超级计算机上运行一切(使用slurm系统)。 我想做的是,它同时在20个CPU上运行20个对象(因此同时运行20行),并以这种方式运行整个目录
有什么建议吗? 谢谢
您可以将其设置为数组作业。将循环的内部部分放入
something.slurm
文件中,并将i
设置为该文件顶部的数组元素ID($SLURM_ARRAY_TASK_ID
)(一个.slurm文件只是一个普通的shell脚本,其作业信息编码在注释中)。然后使用sbatch array=1-$totrow something.slurm
启动作业这将把每个Python调用安排为一个单独的任务,并将它们从1到
$totrow
编号。SLURM将在下一个可用的CPU上运行它们中的每一个,可能同时运行所有CPU相关问题 更多 >
编程相关推荐