Это ваша проблема:
#BSUB -J randJobName_ul0vm[1-6]%22
В первом скрипте вы используете массив из 3 элементов, поэтому Id
находится в диапазоне от 0 до 2, для которых вы определили Input
. Во втором сценарии вы используете массив из 6 элементов, поэтому Id
колеблется от 0 до 5, и три экземпляра массива, использующие Id=3,4,5
, завершатся неудачно с указанной ошибкой, поскольку Input
не определено для этих индексов.
Вам нужно изменить вышеприведенную строку на
#BSUB -J randJobName_ul0vm[1-3]%22
, и в этом случае у вас будет 3 элемента массива, каждый из которых будет работать pythoncode.py
с parameter1
и parameter2
последовательно. Если вы хотите, чтобы они выполнялись параллельно (то есть одна задача массива к одному выполнению pythoncode.py
и, таким образом, массиву из 6 подзадач), вам нужно изменить ваш скрипт на что-то вроде этого:
#!/bin/bash
#BSUB -J randJobName_ul0vm[1-6]%22
#BSUB -oo <pathToLog>/log/randJobName_ul0vm.o.%J.%I
#BSUB -q "server.q"
#BSUB -n 2
#BSUB -R "span[hosts=1]"
JOB_ID=$LSB_JOBID
SGE_TASK_ID=$LSB_JOBINDEX
JOB_NAME=$LSB_JOBNAME
#### Squirrel changes begin #####
INDEX=$((SGE_TASK_ID-1)) # this ranges over 0,1,2,3,4,5 over the 6 tasks
InputIdx=$(( INDEX / 2 )) # this ranges over 0,0,1,1,2,2
ParameterIdx=$(( INDEX / 3)) # this ranges over 0,0,0,1,1,1
declare -a Input
Input[0]="input1 input2"
Input[1]="input3 input4"
Input[2]="input5 input6"
declare -a Parameter
Parameter[0]="parameter1"
Parameter[1]="parameter2"
python pythoncode.py ${Parameter[${ParameterIdx}]} ${Input[${InputIdx}]}