У меня есть следующий сценарий PBS:
#!/bin/bash -l
#PBS -l walltime=12:00:00,nodes=1:ppn=24,pmem=2580mb
((start=24))
((n_jobs_procimg=8))
cd $PBS_O_WORKDIR
conda activate msi_sip_37
module load parallel
parallel -u -j 3 < commands.txt
wait
А содержимое commands.txt:
python runs/process_img.py --n_jobs $n_jobs_procimg --msi_test True --idx_min $start+0 --idx_max $start+8
python runs/process_img.py --n_jobs $n_jobs_procimg --msi_test True --idx_min $start+8 --idx_max $start+16
python runs/process_img.py --n_jobs $n_jobs_procimg --msi_test True --idx_min $start+16 --idx_max $start+24
Я [неправильно] ожидаю, что $start
и $n_jobs_procimg
должен быть доступен для команд в commands.txt , но когда я запускаю это задание, я получаю следующую ошибку для каждой команды в commands.txt :
usage: process_img.py [-h] [-n N_JOBS] [-m MSI_TEST] [-i IDX_MIN] [-d IDX_MAX]
process_img.py: error: argument -n/--n_jobs: expected one argument
Как изменить команду parallel
в сценарии PBS, чтобы $start
и $n_jobs_procimg
передавались в commands.txt ?
In В этом случае $start
должно быть целым числом, равным 24, а $n_jobs_procimg
должно быть целым числом, равным 8.
Это не имеет отношения к моему вопросу, но для контекста process_img.py сценарий использует многопроцессорный пул, который принимает количество ядер обработки и в качестве аргумента (--n_jobs
), и я хочу контролировать это на основе общего количества ядер обработки, которые у меня есть.