Извиняюсь за основной вопрос, но я не смог найти решение в Google.Я хочу запустить скрипт отдельно для каждой хромосомы в списке (называемый CHROMS
в приведенном ниже коде), используя распараллеливание через MPI.Сценарий, который я вызываю (some_script.sh
), принимает параметр хромосомы, который я хочу изменить для каждого вызова, и другой параметр, который я хочу сохранить постоянным во всех вызовах.По сути, мне нужно то, что делает приведенный ниже код, но с mpiexec вместо фоновых процессов.
#Run the pipeline for each chromosome separately.
#run_chromosome_iteration.sh
SOME_OTHER_PARAM="blah blah"
for c in $CHROMS;
do
$SCRIPTS/some_script.sh $c $SOME_OTHER_PARAM &
done
Редактировать: на самом деле в моем проекте происходит два уровня распараллеливания: я запускаю свою модель 100 раз, используя100 заданий, и я хотел бы распараллелить каждое задание по набору хромосом (в данном случае 11).Пожалуйста, смотрите код ниже:
#Submit all jobs.
for i in {1..100};
do
qsub -v ITER=${i} run_chromosome_iteration.sh
done
Таким образом, я мог бы использовать массивы заданий на более низком уровне распараллеливания, но это привело бы к 1100 независимым заданиям и было бы менее эффективным по сравнению с распределением памяти между параллельными процессами.Я также не могу просто использовать фоновые процессы, потому что объем памяти, который я буду использовать, требует двух вычислительных узлов в моем кластере.Вот почему я хочу использовать MPI.