我需要提交 100 个 slurm 作业,它们都执行相同的计算,但略有变化(唯一的区别是年份;所有文件都有不同的年份)。有没有办法将它们一起提交,而无需编写 slurm 文件并单独运行?
例如,我有 100 个 python 文件,名称为:
process1.py
、process2.py
、process3.py
、...等等。我正在寻找一种可以为所有这些资源一起分配 HPC 资源的方法,如下所示-
#!/bin/bash
#SBATCH -n 2
#SBATCH -p main
#SBATCH --qos main
#SBATCH -N 1
#SBATCH -J name
.
.
. #other SBATCH commands
.
.
python process1.py
python process2.py
python process3.py
python process4.py....
您是否希望为每个 Python 文件提交单独的作业,或者让所有 100 个文件作为同一作业的一部分同时运行?
您始终可以创建一个循环并在循环内运行 Python 文件:
for ((i = 1; i <= 100; i++)); do
curr_file = "process$i.py"
python curr_file
如果您想并行运行文件并且您的系统支持,您还可以使用 slurm 作业数组。这个论证是这样的:
#SBATCH --array=1-2 # where 2 is maximum job allocation