我有一个slurm脚本来运行我的python代码:
#!/bin/bash -l
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=10G
#SBATCH --account=my_account
#SBATCH --qos=default
#SBATCH --time=2-00:00:00
###Array setup here
#SBATCH --array=1
#SBATCH --open-mode=truncate
#SBATCH --output=out_files/output.o
module purge
module load my_cluster
module load Miniconda3/4.9.2
eval "$(${EBROOTMINICONDA3}/bin/conda shell.bash hook)"
conda activate my_conda_env
cd /my_directory
python my_python_code.py -filename file_a.txt
字符串
这是可行的,但目前,它只启动1个作业并使用file_a.txt
作为参数。
如何同时启动10个作业?我知道我可以用途:
#SBATCH --array=1-10
型
但是我想使用file_a.txt
作为作业1的参数,file_b.txt
作为作业2的参数,等等。
如果可能的话,我希望将文件名列表作为一个单独的文本文件提供,由slurm脚本读取。
1条答案
按热度按时间jobtbby31#
根据docs,
SLURM_ARRAY_TASK_ID
环境变量将被设置为(1索引)任务ID。我们可以将这个env var与sed
一起使用,以从文件列表中获取第N行my_files.txt
字符串
sed -n "xp"
命令归功于this answer。我的工作.sh
型
已编辑,根据FlyingTeller的评论和Slurm文档,将任务ID添加到输出文件名中。