我使用的集群刚刚切换到SLURM,我正在尝试做一些我认为非常简单的事情。我有一个脚本要在按顺序编号的许多文件上运行,例如:
python script.py file1.gz
python script.py file2.gz
python script.py file3.gz
我有一些作品,但无法弄清楚如何将它们组合在一起运行。我想我需要使用#SBATCH --array=0-29
来调用文件数量,并且还涉及$SLURM_ARRAY_TASK_ID
。
#!/bin/bash -l
#SBATCH --ntasks=1
#SBATCH --time=24:00:00
#SBATCH --mem=4G
#SBATCH --array=0-29 ##my files go from file1 - file30
$SLURM_ARRAY_TASK_ID
我不确定如何合并SBATCH --array
和ARRAY_TASK_ID
以使script.py
一次在所有文件上运行。
答案 0 :(得分:0)
您几乎拥有它:
#!/bin/bash -l
#SBATCH --ntasks=1
#SBATCH --time=24:00:00
#SBATCH --mem=4G
#SBATCH --array=1-30 ##my files go from file1 - file30
python script.py "file${SLURM_ARRAY_TASK_ID}.gz"
最好对数组元素编号,例如对文件编号。然后,调用使用该SLURM变量创建的正确文件名的脚本。
此作业提交脚本将一组作业排队,每个作业的时间限制为24h,最多使用4GiB的内存,并且仅运行一个处理器(一个处理器)。