如何使用不同的输入文件提交 slurm 作业数组
how to submit slurm job array with different input files
我有一个需要处理的文本文件列表(约 200 个文件)。所以我试图为这个任务提交一个 slurm 作业数组,但我找不到解决方案。我尝试过的是通过循环遍历单个任务的文件来提交多个作业(~200 个作业)。我确定有办法为这个问题创建作业数组,你能给我建议吗?
那是我的bash脚本
#!/bin/bash
input_list=
prefix=
readarray list < $input_list
a=0
for i in "${list[@]}"
do
file=$i
sbatch -a1-1 -- $PWD/kscript.sh $file $prefix"_"$a
a=`expr $a + 1`
done
我想出了解决方案,所以它比我想象的要简单,这里是:
#!/bin/bash
# Task name
#SBATCH -J myjob
# Run time limit
#SBATCH --time=4:00:00
# Standard and error output in different files
#SBATCH -o %j_%N.out.log
#SBATCH -e %j_%N.err.log
#SBATCH --ntasks=1
# Execute application code
input_list=
prefix=
readarray list < $input_list
file=${list[$SLURM_ARRAY_TASK_ID-1]}
input=$PWD"/"$file
output=$prefix"_"$SLURM_ARRAY_TASK_ID
./kscript.sh $input $output
我有一个需要处理的文本文件列表(约 200 个文件)。所以我试图为这个任务提交一个 slurm 作业数组,但我找不到解决方案。我尝试过的是通过循环遍历单个任务的文件来提交多个作业(~200 个作业)。我确定有办法为这个问题创建作业数组,你能给我建议吗?
那是我的bash脚本
#!/bin/bash
input_list=
prefix=
readarray list < $input_list
a=0
for i in "${list[@]}"
do
file=$i
sbatch -a1-1 -- $PWD/kscript.sh $file $prefix"_"$a
a=`expr $a + 1`
done
我想出了解决方案,所以它比我想象的要简单,这里是:
#!/bin/bash
# Task name
#SBATCH -J myjob
# Run time limit
#SBATCH --time=4:00:00
# Standard and error output in different files
#SBATCH -o %j_%N.out.log
#SBATCH -e %j_%N.err.log
#SBATCH --ntasks=1
# Execute application code
input_list=
prefix=
readarray list < $input_list
file=${list[$SLURM_ARRAY_TASK_ID-1]}
input=$PWD"/"$file
output=$prefix"_"$SLURM_ARRAY_TASK_ID
./kscript.sh $input $output