SLURM:如何从目录中并行地为不同的$arg运行相同的python脚本

2024-05-16 18:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须为大约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行),并以这种方式运行整个目录

有什么建议吗? 谢谢


Tags: 文件对象目录txt脚本bash参数计算机
1条回答
网友
1楼 · 发布于 2024-05-16 18:37:47

您可以将其设置为数组作业。将循环的内部部分放入something.slurm文件中,并将i设置为该文件顶部的数组元素ID($SLURM_ARRAY_TASK_ID)(一个.slurm文件只是一个普通的shell脚本,其作业信息编码在注释中)。然后使用sbatch array=1-$totrow something.slurm启动作业

这将把每个Python调用安排为一个单独的任务,并将它们从1到$totrow编号。SLURM将在下一个可用的CPU上运行它们中的每一个,可能同时运行所有CPU

相关问题 更多 >